[Tests] make the fast suite pass on Alpine

`nvm_get_arch`: skip the smartos arm64/armv8l cases, which have no uname mock and fall through to the real host (adding a musl suffix on Alpine).
`nvm_get_arch_unofficial`: skip the glibc chroot (fixed /lib64 loader, sudo); the musl mapping is already covered by the `nvm_get_arch alpine` test.
`nvm_install_no_progress_bar`: skip below the musl floor, since v0.12.18 has no musl binary and hardcodes the glibc tarball URL.
This commit is contained in:
Jordan Harband
2026-07-14 23:17:01 -07:00
parent f1e7a84cb5
commit 438009f54e
3 changed files with 30 additions and 9 deletions
+5
View File
@@ -90,8 +90,13 @@ run_test amd64 smartos x64 no_pkg_info
run_test x86 osx x86
run_test amd64 osx x64
# These smartos cases have no arch-specific uname mock, so nvm_get_os falls
# through to the real host; on Alpine that host is linux and picks up the musl
# suffix, which these non-musl assertions do not expect. Skip them there.
if [ ! -f "/etc/alpine-release" ]; then
run_test arm64 smartos x64
run_test armv8l smartos x64
fi
run_test loongarch64 linux loong64
@@ -57,6 +57,13 @@ setup_chroot() {
sudo mknod "${chroot_dir}/dev/null" c 1 3
}
# The chroot fixtures assume a glibc layout (fixed dynamic-linker path under
# /lib64, coreutils binaries). On musl Alpine that setup does not apply, and
# nvm_get_arch's musl mapping is already covered by the "nvm_get_arch alpine"
# test, so skip the chroot checks there and still run the ls-remote checks.
if [ -f "/etc/alpine-release" ]; then
echo "on Alpine; skipping chroot arch checks (covered by 'nvm_get_arch alpine')"
else
setup_chroot "${CHROOT_WITH_ALPINE}"
setup_chroot "${CHROOT_WITHOUT_ALPINE}"
@@ -66,6 +73,7 @@ ARCH_WITH_ALPINE=$(sudo chroot "${CHROOT_WITH_ALPINE}" /bin/sh -c ". ./nvm.sh &&
ARCH_WITHOUT_ALPINE=$(sudo chroot "${CHROOT_WITHOUT_ALPINE}" /bin/sh -c ". ./nvm.sh && nvm_get_arch")
[ "${ARCH_WITHOUT_ALPINE}" != "x64-musl" ] || die "Did not expect x64-musl for non-alpine environment"
fi
# Run tests for nvm ls-remote
test_default_ls_remote() {
@@ -14,6 +14,14 @@ die () { >&2 echo "$@" ; cleanup ; exit 1; }
: nvm.sh
\. ../../../nvm.sh
# v0.12.18 predates musl binaries and the expected output hardcodes the glibc
# x64 tarball URL, so on Alpine nvm would request a nonexistent -musl build.
# The progress-bar behavior is not OS-specific, so skip below the musl floor.
if [ -f "/etc/alpine-release" ]; then
echo 'on Alpine; skipping (v0.12.18 has no musl binary)'
exit 0
fi
cleanup
OUTPUT="$(TERM=dumb 2>&1 nvm install --no-progress v0.12.18)"