From 3e37cfb9c43134b293fc96698740c0fc73625f08 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Tue, 24 Mar 2026 12:44:21 -0700 Subject: [PATCH] [Tests] fix 4 test failures - `nvm-exec` test: expect "Found .nvmrc" message in output, since `nvm_rc_version` now outputs it to stdout via fd 3 redirection (ef162036) - `nvm_install_binary_nosource`: fix exit code capture by running the command directly instead of inside a subshell with `echo $?` (05d78477) - `nvm_iojs_version_has_solaris_binary`: bare versions like `v3.3.1` (without `iojs-` prefix) are node versions and should be rejected. The old tests relied on the buggy comparison that let them through (53e6244a) - `nvm_get_arch_unofficial`: copy `uname` into the chroot. The old test passed only because the unconditional `NVM_ARCH=x64-musl` masked the missing binary, but the `case` fix now requires a real arch to match (39e71eab) --- ...unning 'nvm-exec' should display required node version | 3 ++- test/fast/Unit tests/nvm_get_arch_unofficial | 5 +++-- test/fast/Unit tests/nvm_install_binary_nosource | 2 +- test/fast/Unit tests/nvm_iojs_version_has_solaris_binary | 8 +++++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/test/fast/Running 'nvm-exec' should display required node version b/test/fast/Running 'nvm-exec' should display required node version index 0d24e56..66ab9a6 100755 --- a/test/fast/Running 'nvm-exec' should display required node version +++ b/test/fast/Running 'nvm-exec' should display required node version @@ -13,7 +13,8 @@ NVM_TEST_VERSION=v0.42 echo "$NVM_TEST_VERSION" > .nvmrc OUTPUT="$(../../nvm-exec 2>&1)"; -EXPECTED="N/A: version \"${NVM_TEST_VERSION}\" is not yet installed. +EXPECTED="Found '$(pwd)/.nvmrc' with version <${NVM_TEST_VERSION}> +N/A: version \"${NVM_TEST_VERSION}\" is not yet installed. You need to run \`nvm install ${NVM_TEST_VERSION}\` to install and use it. No NODE_VERSION provided; no .nvmrc file found"; diff --git a/test/fast/Unit tests/nvm_get_arch_unofficial b/test/fast/Unit tests/nvm_get_arch_unofficial index a05757f..e5ba900 100755 --- a/test/fast/Unit tests/nvm_get_arch_unofficial +++ b/test/fast/Unit tests/nvm_get_arch_unofficial @@ -37,11 +37,12 @@ setup_chroot() { # Files and binaries cp ../../../nvm.sh "${chroot_dir}/" - cp /bin/sh /usr/bin/dirname "${chroot_dir}/bin/" + cp /bin/sh /usr/bin/dirname /usr/bin/uname "${chroot_dir}/usr/bin/" + ln -sf ../usr/bin/sh "${chroot_dir}/bin/sh" [ "${chroot_dir}" = "${CHROOT_WITH_ALPINE}" ] && touch "${chroot_dir}/etc/alpine-release" # Libraries - for binary in /bin/sh /usr/bin/dirname; do + for binary in /bin/sh /usr/bin/dirname /usr/bin/uname; do for lib in $(ldd $binary | awk '{print $3}' | grep "^/"); do dir=$(dirname "${lib}") mkdir -p "${chroot_dir}${dir}" diff --git a/test/fast/Unit tests/nvm_install_binary_nosource b/test/fast/Unit tests/nvm_install_binary_nosource index f3bef0a..1c77ccb 100755 --- a/test/fast/Unit tests/nvm_install_binary_nosource +++ b/test/fast/Unit tests/nvm_install_binary_nosource @@ -23,7 +23,7 @@ if [ "${OUTPUT#*$EXPECTED_OUTPUT}" = "${OUTPUT}" ]; then die "No source binary flag is active and should have returned >${EXPECTED_OUTPUT}<. Instead it returned >${OUTPUT}<" fi -EXIT_CODE="$(nvm_install_binary node std 8.0.0 1 2>/dev/null; echo $?)" +nvm_install_binary node std 8.0.0 1 >/dev/null 2>&1; EXIT_CODE=$? [ "${EXIT_CODE}" = "2" ] || die "Expected exit code 2 when nosource=1 and binary fails, got ${EXIT_CODE}" # Unit test to check if the function errors out when the flag is set diff --git a/test/fast/Unit tests/nvm_iojs_version_has_solaris_binary b/test/fast/Unit tests/nvm_iojs_version_has_solaris_binary index ab88516..b6d03b4 100755 --- a/test/fast/Unit tests/nvm_iojs_version_has_solaris_binary +++ b/test/fast/Unit tests/nvm_iojs_version_has_solaris_binary @@ -14,9 +14,11 @@ assert_not_ok nvm_iojs_version_has_solaris_binary "v1.1.0" assert_not_ok nvm_iojs_version_has_solaris_binary "v4.0.0" assert_not_ok nvm_iojs_version_has_solaris_binary "v8.0.0" -assert_ok nvm_iojs_version_has_solaris_binary "v3.3.1" +# Bare versions without iojs- prefix are node versions, not iojs +assert_not_ok nvm_iojs_version_has_solaris_binary "v3.3.1" +assert_not_ok nvm_iojs_version_has_solaris_binary "v3.3.2" +assert_not_ok nvm_iojs_version_has_solaris_binary "v3.4.1" + assert_ok nvm_iojs_version_has_solaris_binary "iojs-v3.3.1" -assert_ok nvm_iojs_version_has_solaris_binary "v3.3.2" assert_ok nvm_iojs_version_has_solaris_binary "iojs-v3.3.2" -assert_ok nvm_iojs_version_has_solaris_binary "v3.4.1" assert_ok nvm_iojs_version_has_solaris_binary "iojs-v3.4.1"