From 05d784772c9fb2390d28a480f6632d37719c32d1 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sat, 14 Mar 2026 14:29:56 -0700 Subject: [PATCH] [Fix] `nvm_install_binary`: return failure when binary download fails with `-b` When `nosource=1` (the `-b` flag) and binary download fails, the function returned 0 (success) instead of a non-zero exit code, masking the installation failure. Bug introduced in https://github.com/nvm-sh/nvm/commit/4fdef427e4b1d563570ba5992bdbe7d7e23f025b / #2439. --- nvm.sh | 2 +- test/fast/Unit tests/nvm_install_binary_nosource | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/nvm.sh b/nvm.sh index d853c9d..6a58ebf 100755 --- a/nvm.sh +++ b/nvm.sh @@ -2374,7 +2374,7 @@ nvm_install_binary() { # Read nosource from arguments if [ "${nosource-}" = '1' ]; then nvm_err 'Binary download failed. Download from source aborted.' - return 0 + return 2 fi nvm_err 'Binary download failed, trying source.' diff --git a/test/fast/Unit tests/nvm_install_binary_nosource b/test/fast/Unit tests/nvm_install_binary_nosource index 2034658..f3bef0a 100755 --- a/test/fast/Unit tests/nvm_install_binary_nosource +++ b/test/fast/Unit tests/nvm_install_binary_nosource @@ -23,6 +23,9 @@ 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 $?)" +[ "${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 OUTPUT="$(nvm_install_binary node std 8.0.0 0 2>&1)" EXPECTED_OUTPUT='Binary download failed. Download from source aborted.'