From 4249b1c2bb38cafaf01fb37eb93be1adb8095374 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Fri, 31 Mar 2017 00:52:56 -0700 Subject: [PATCH] [Fix] `nvm_ensure_version_installed`: add `system` support. Relates to #1238 --- nvm.sh | 7 +++++ .../Unit tests/nvm_ensure_version_installed | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/nvm.sh b/nvm.sh index 011c664..184440a 100644 --- a/nvm.sh +++ b/nvm.sh @@ -289,6 +289,13 @@ nvm_version_path() { nvm_ensure_version_installed() { local PROVIDED_VERSION PROVIDED_VERSION="${1-}" + if [ "${PROVIDED_VERSION}" = 'system' ]; then + if nvm_has_system_iojs || nvm_has_system_node; then + return 0 + fi + nvm_err "N/A: no system version of node/io.js is installed." + return 1 + fi local LOCAL_VERSION local EXIT_CODE LOCAL_VERSION="$(nvm_version "${PROVIDED_VERSION}")" diff --git a/test/fast/Unit tests/nvm_ensure_version_installed b/test/fast/Unit tests/nvm_ensure_version_installed index 4e167ed..e819657 100755 --- a/test/fast/Unit tests/nvm_ensure_version_installed +++ b/test/fast/Unit tests/nvm_ensure_version_installed @@ -3,6 +3,7 @@ die () { echo "$@" ; cleanup ; exit 1; } cleanup () { rm -rf "$(nvm_version_path v0.1.2)" + unset -f nvm_has_system_node nvm_has_system_iojs } \. ../../../nvm.sh @@ -31,4 +32,31 @@ You need to run "nvm install iojs" to install it before using it.' [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "expected 'nvm_ensure_version_installed iojs' to give $EXPECTED_OUTPUT, got $OUTPUT" [ "_$EXIT_CODE" = "_1" ] || die "expected 'nvm_ensure_version_installed iojs' to exit with 1, got $EXIT_CODE" +nvm_has_system_node() { return 1; } +nvm_has_system_iojs() { return 1; } + +OUTPUT="$(nvm_ensure_version_installed system 2>&1)" +EXIT_CODE=$? +EXPECTED_OUTPUT='N/A: no system version of node/io.js is installed.' +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "expected 'nvm_ensure_version_installed system' with neither installed to give $EXPECTED_OUTPUT, got $OUTPUT" +[ "_$EXIT_CODE" = "_1" ] || die "expected 'nvm_ensure_version_installed system' with neither installed to exit with 1, got $EXIT_CODE" + +nvm_has_system_node() { return 0; } +nvm_has_system_iojs() { return 1; } + +OUTPUT="$(nvm_ensure_version_installed system 2>&1)" +EXIT_CODE=$? +EXPECTED_OUTPUT='' +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "expected 'nvm_ensure_version_installed system' with node installed to give $EXPECTED_OUTPUT, got $OUTPUT" +[ "_$EXIT_CODE" = "_0" ] || die "expected 'nvm_ensure_version_installed system' with node installed to exit with 0, got $EXIT_CODE" + +nvm_has_system_node() { return 1; } +nvm_has_system_iojs() { return 0; } + +OUTPUT="$(nvm_ensure_version_installed system 2>&1)" +EXIT_CODE=$? +EXPECTED_OUTPUT='' +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "expected 'nvm_ensure_version_installed system' with iojs installed to give $EXPECTED_OUTPUT, got $OUTPUT" +[ "_$EXIT_CODE" = "_0" ] || die "expected 'nvm_ensure_version_installed system' with iojs installed to exit with 0, got $EXIT_CODE" + cleanup