From 0d9329435c2b715c1508ac185c56500fd81e70e4 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sat, 21 Feb 2015 20:03:06 -0800 Subject: [PATCH] Create `nvm_ensure_version_installed` --- nvm.sh | 18 +++++++++++++++ .../Unit tests/nvm_ensure_version_installed | 23 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100755 test/fast/Unit tests/nvm_ensure_version_installed diff --git a/nvm.sh b/nvm.sh index c936427..96648e8 100644 --- a/nvm.sh +++ b/nvm.sh @@ -189,6 +189,24 @@ nvm_version_path() { fi } +nvm_ensure_version_installed() { + local PROVIDED_VERSION + PROVIDED_VERSION="$1" + local LOCAL_VERSION + LOCAL_VERSION="$(nvm_version "$PROVIDED_VERSION")" + local NVM_VERSION_DIR + NVM_VERSION_DIR="$(nvm_version_path "$LOCAL_VERSION")" + if [ ! -d "$NVM_VERSION_DIR" ]; then + VERSION="$(nvm_resolve_alias "$PROVIDED_VERSION")" + if [ $? -eq 0 ]; then + echo "N/A: version \"$PROVIDED_VERSION -> $VERSION\" is not yet installed" >&2 + else + echo "N/A: version \"$(nvm_ensure_version_prefix "$PROVIDED_VERSION")\" is not yet installed" >&2 + fi + return 1 + fi +} + # Expand a version using the version cache nvm_version() { local PATTERN diff --git a/test/fast/Unit tests/nvm_ensure_version_installed b/test/fast/Unit tests/nvm_ensure_version_installed new file mode 100755 index 0000000..ed2d996 --- /dev/null +++ b/test/fast/Unit tests/nvm_ensure_version_installed @@ -0,0 +1,23 @@ +#!/bin/sh + +die () { echo $@ ; cleanup ; exit 1; } +cleanup () { + rm -rf "$(nvm_version_path v0.1.2)" +} + +. ../../../nvm.sh + +mkdir -p "$(nvm_version_path v0.1.2)" + +OUTPUT="$(nvm_ensure_version_installed foo 2>&1)" +EXIT_CODE=$? +EXPECTED_OUTPUT='N/A: version "foo" is not yet installed' +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "expected 'nvm_ensure_version_installed foo' to give $EXPECTED_OUTPUT, got $OUTPUT" +[ "_$EXIT_CODE" = "_1" ] || die "expected 'nvm_ensure_version_installed foo' to exit with 1, got $EXIT_CODE" + +OUTPUT="$(nvm_ensure_version_installed 0.1)" +EXIT_CODE=$? +[ "_$OUTPUT" = "_" ] || die "expected 'nvm_ensure_version_installed 0.1' to have no output, got $OUTPUT" +[ "_$EXIT_CODE" = "_0" ] || die "expected 'nvm_ensure_version_installed 0.1' to exit with 0, got $EXIT_CODE" + +cleanup