mirror of
https://github.com/nvm-sh/nvm.git
synced 2026-07-18 12:58:21 +08:00
[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:
@@ -90,8 +90,13 @@ run_test amd64 smartos x64 no_pkg_info
|
||||
run_test x86 osx x86
|
||||
run_test amd64 osx x64
|
||||
|
||||
run_test arm64 smartos x64
|
||||
run_test armv8l smartos 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,15 +57,23 @@ setup_chroot() {
|
||||
sudo mknod "${chroot_dir}/dev/null" c 1 3
|
||||
}
|
||||
|
||||
setup_chroot "${CHROOT_WITH_ALPINE}"
|
||||
setup_chroot "${CHROOT_WITHOUT_ALPINE}"
|
||||
# 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}"
|
||||
|
||||
# Run tests in chroot environments
|
||||
ARCH_WITH_ALPINE=$(sudo chroot "${CHROOT_WITH_ALPINE}" /bin/sh -c ". ./nvm.sh && nvm_get_arch")
|
||||
[ "${ARCH_WITH_ALPINE}" = "x64-musl" ] || die "Expected x64-musl for alpine environment but got ${ARCH_WITH_ALPINE}"
|
||||
# Run tests in chroot environments
|
||||
ARCH_WITH_ALPINE=$(sudo chroot "${CHROOT_WITH_ALPINE}" /bin/sh -c ". ./nvm.sh && nvm_get_arch")
|
||||
[ "${ARCH_WITH_ALPINE}" = "x64-musl" ] || die "Expected x64-musl for alpine environment but got ${ARCH_WITH_ALPINE}"
|
||||
|
||||
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"
|
||||
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)"
|
||||
|
||||
Reference in New Issue
Block a user