diff --git a/nvm.sh b/nvm.sh index 3069309..f6e9511 100644 --- a/nvm.sh +++ b/nvm.sh @@ -98,14 +98,17 @@ nvm_rc_version() { if [ -e "$NVMRC_PATH" ]; then read NVM_RC_VERSION < "$NVMRC_PATH" echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>" + else + >&2 echo "No .nvmrc file found" + return 1 fi } nvm_version_greater() { local LHS - LHS=$(echo "$1" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}') + LHS=$(nvm_normalize_version "$1") local RHS - RHS=$(echo "$2" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}') + RHS=$(nvm_normalize_version "$2") [ $LHS -gt $RHS ]; } @@ -171,7 +174,7 @@ nvm_remote_version() { } nvm_normalize_version() { - echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }' + echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }' } nvm_format_version() { @@ -192,11 +195,9 @@ nvm_prepend_path() { nvm_binary_available() { # binaries started with node 0.8.6 - local MINIMAL - MINIMAL="0.8.6" - local VERSION - VERSION=$1 - [ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ] + local LAST_VERSION_WITHOUT_BINARY + LAST_VERSION_WITHOUT_BINARY="0.8.5" + nvm_version_greater "$1" "$LAST_VERSION_WITHOUT_BINARY" } nvm_ls_current() { @@ -839,5 +840,9 @@ nvm() { esac } -nvm ls default >/dev/null && nvm use default >/dev/null || true +if nvm ls default >/dev/null; then + nvm use default >/dev/null +elif nvm_rc_version >/dev/null 2>&1; then + nvm use >/dev/null +fi diff --git a/test/fast/Unit tests/nvm_find_up b/test/fast/Unit tests/nvm_find_up new file mode 100755 index 0000000..39fb568 --- /dev/null +++ b/test/fast/Unit tests/nvm_find_up @@ -0,0 +1,26 @@ +#!/bin/sh + +die () { echo $@ ; cleanup ; exit 1; } +setup() { + cleanup + mkdir -p tmp_nvm_find_up/a/b/c/d + touch tmp_nvm_find_up/test + touch tmp_nvm_find_up/a/b/c/test +} +cleanup () { + rm -rf tmp_nvm_find_up +} + +. ../../../nvm.sh + +setup + +TEST_DIR="$PWD" + +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 1 dir up" +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 2 dirs up" +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find in current dir" +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c/d nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find 1 level up from current dir" + +cleanup + diff --git a/test/fast/Unit tests/nvm_has b/test/fast/Unit tests/nvm_has new file mode 100755 index 0000000..437d26f --- /dev/null +++ b/test/fast/Unit tests/nvm_has @@ -0,0 +1,12 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +. ../../../nvm.sh + +nvm_has cat && type cat > /dev/null || die 'nvm_has locates "cat" properly' + +[ "~$(nvm_has foobarbaz 2>&1)" = "~" ] || die "nvm_has does not suppress error output" + +! nvm_has foobarbaz && ! type foobarbaz >/dev/null 2>&1 || die "nvm_has does not return a nonzero exit code when not found" +