diff --git a/nvm.sh b/nvm.sh index 82d26c0..15c8325 100755 --- a/nvm.sh +++ b/nvm.sh @@ -3558,6 +3558,10 @@ nvm() { EXIT_CODE=$? else EXIT_CODE=-1 + if [ $nosource -eq 1 ]; then + nvm_err "Binary download is not available for ${VERSION}" + EXIT_CODE=3 + fi fi if [ $EXIT_CODE -ne 0 ]; then @@ -3575,25 +3579,27 @@ nvm() { fi fi - if [ $EXIT_CODE -eq 0 ] && nvm_use_if_needed "${VERSION}" && nvm_install_npm_if_needed "${VERSION}"; then - if [ -n "${LTS-}" ]; then - nvm_ensure_default_set "lts/${LTS}" + if [ $EXIT_CODE -eq 0 ]; then + if nvm_use_if_needed "${VERSION}" && nvm_install_npm_if_needed "${VERSION}"; then + if [ -n "${LTS-}" ]; then + nvm_ensure_default_set "lts/${LTS}" + else + nvm_ensure_default_set "${provided_version}" + fi + if [ "${NVM_UPGRADE_NPM}" = 1 ]; then + nvm install-latest-npm + EXIT_CODE=$? + fi + if [ $EXIT_CODE -eq 0 ] && [ -z "${SKIP_DEFAULT_PACKAGES-}" ]; then + nvm_install_default_packages + fi + if [ $EXIT_CODE -eq 0 ] && [ -n "${REINSTALL_PACKAGES_FROM-}" ] && [ "_${REINSTALL_PACKAGES_FROM}" != "_N/A" ]; then + nvm reinstall-packages "${REINSTALL_PACKAGES_FROM}" + EXIT_CODE=$? + fi else - nvm_ensure_default_set "${provided_version}" - fi - if [ "${NVM_UPGRADE_NPM}" = 1 ]; then - nvm install-latest-npm EXIT_CODE=$? fi - if [ $EXIT_CODE -eq 0 ] && [ -z "${SKIP_DEFAULT_PACKAGES-}" ]; then - nvm_install_default_packages - fi - if [ $EXIT_CODE -eq 0 ] && [ -n "${REINSTALL_PACKAGES_FROM-}" ] && [ "_${REINSTALL_PACKAGES_FROM}" != "_N/A" ]; then - nvm reinstall-packages "${REINSTALL_PACKAGES_FROM}" - EXIT_CODE=$? - fi - else - EXIT_CODE=$? fi return $EXIT_CODE diff --git a/test/fast/Unit tests/nvm install -b b/test/fast/Unit tests/nvm install -b new file mode 100755 index 0000000..66f6564 --- /dev/null +++ b/test/fast/Unit tests/nvm install -b @@ -0,0 +1,16 @@ +#!/bin/sh + +die () { echo "$@" ; exit 1; } + +\. ../../../nvm.sh + +VERSION="0.7.0" + +EXIT_CODE=$(nvm install -b "${VERSION}" ; echo $?) + +[ $EXIT_CODE -eq 3 ] || die "Expected exit code 3, got ${EXIT_CODE}" + +ACTUAL="$(nvm install -b "${VERSION}" 2>&1)" +EXPECTED="Binary download is not available for v${VERSION}" + +[ "${ACTUAL}" = "${EXPECTED}" ] || die "Expected >${EXPECTED}<, got >${ACTUAL}<"