Files
sausage/userland/brush/source/e2e/nvm/Dockerfile
T
2026-11-11 22:04:16 +00:00

31 lines
1.7 KiB
Docker

# Environment for nvm's upstream version-listing tests. The suite is pinned to
# nvm v0.40.7; its runner is pinned to the version used by nvm itself.
FROM ubuntu:26.04
ARG NVM_REF=f0b0c6bb0b281ceeb106c8cf9ab8fde141215092
# Bump this together with the urchin version in the URL below; it is the sha256 of the
# npm tarball, cross-checked against the registry's own sha512 integrity field.
ARG URCHIN_SHA256=caa836710230bf0b82caa54375cd5609c7083336910b83202156e2424b4139d0
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl git python3-pexpect python3-pytest \
&& rm -rf /var/lib/apt/lists/* \
&& curl -fsSL -o /tmp/urchin.tgz https://registry.npmjs.org/urchin/-/urchin-0.0.5.tgz \
&& echo "$URCHIN_SHA256 /tmp/urchin.tgz" | sha256sum -c - \
&& tar -xzf /tmp/urchin.tgz -C /usr/local/bin --strip-components=1 package/urchin \
&& rm /tmp/urchin.tgz \
&& chmod +x /usr/local/bin/urchin
COPY nvm/skip-list.txt /e2e/skip-list.txt
# urchin runs every executable file in the suite, so skipping means taking the execute bit off.
# It happens here, as root: the container runs as the host user and could not chmod these itself.
# `chmod -R a+rwX` then leaves them alone, since capital X only affects what is already executable.
RUN git clone --filter=blob:none https://github.com/nvm-sh/nvm /nvm \
&& git -C /nvm checkout -q "$NVM_REF" \
&& grep -v '^[[:space:]]*\(#\|$\)' /e2e/skip-list.txt | while IFS= read -r test; do \
chmod a-x "/nvm/test/fast/Listing versions/$test"; \
done \
&& chmod -R a+rwX /nvm
COPY nvm/entrypoint.sh /e2e/entrypoint.sh
COPY nvm/tests /e2e/tests
COPY lib /e2e/lib
ENV LANG=C.UTF-8 PYTHONPATH=/e2e/lib
ENTRYPOINT ["/e2e/entrypoint.sh"]