#!/usr/bin/env bats NVM_SRC_DIR="${BATS_TEST_DIRNAME}/../.." load "${NVM_SRC_DIR}/nvm.sh" setup() { echo 'setup' >&2 NVM_DIR="${BATS_TMPDIR}" cd "${NVM_DIR}" rm -Rf src alias v* mkdir src alias } teardown() { echo 'teardown' >&2 NVM_DIR="${BATS_TMPDIR}" cd "${NVM_DIR}" rm -Rf src alias v* } @test './Aliases/nvm_resolve_alias' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #EXIT_CODE=$(nvm_resolve_alias ; echo $?) #[ $EXIT_CODE = "1" ] || die "nvm_resolve_alias without an argument did not return 1; got $EXIT_CODE" # #for i in $(seq 1 10) # do # STABLE_ALIAS="$(nvm_resolve_alias test-stable-$i)" # [ "_$STABLE_ALIAS" = "_v0.0.$i" ] \ # || die "'nvm_resolve_alias test-stable-$i' was not v0.0.$i; got $STABLE_ALIAS" # UNSTABLE_ALIAS="$(nvm_resolve_alias test-unstable-$i)" # [ "_$UNSTABLE_ALIAS" = "_v0.1.$i" ] \ # || die "'nvm_resolve_alias test-unstable-$i' was not v0.1.$i; got $UNSTABLE_ALIAS" #done # #EXIT_CODE=$(nvm_resolve_alias nonexistent ; echo $?) #[ $EXIT_CODE = "2" ] || die "'nvm_resolve_alias nonexistent' did not return 2; got $EXIT_CODE" # #STABLE="$(nvm_resolve_alias stable)" #[ "_$STABLE" = "_v0.0.10" ] || die "'nvm_resolve_alias stable' was not v0.0.10; got $STABLE" # #UNSTABLE="$(nvm_resolve_alias unstable)" #[ "_$UNSTABLE" = "_v0.1.10" ] || die "'nvm_resolve_alias unstable' was not v0.1.10; got $UNSTABLE" # } @test './Aliases/Running "nvm alias " should list but one alias.' { ##!/bin/sh # #. ../../../nvm.sh #[ $(nvm alias test-stable-1 | wc -l) = '2' ] } @test './Aliases/Running "nvm alias" lists implicit aliases when they do not exist' { ##!/bin/sh # #. ../../../nvm.sh # #die () { echo $@ ; exit 1; } # #NVM_ALIAS_OUTPUT=$(nvm alias) # #EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" #STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" #echo "$NVM_ALIAS_OUTPUT" | \grep -e "^stable -> $EXPECTED_STABLE (-> $STABLE_VERSION) (default)$" \ # || die "nvm alias did not contain the default local stable node version" # #EXPECTED_UNSTABLE="$(nvm_print_implicit_alias local unstable)" #UNSTABLE_VERSION="$(nvm_version "$EXPECTED_UNSTABLE")" #echo "$NVM_ALIAS_OUTPUT" | \grep -e "^unstable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION) (default)$" \ # || die "nvm alias did not contain the default local unstable node version" # } @test './Aliases/Running "nvm alias" lists manual aliases instead of implicit aliases when present' { ##!/bin/sh # #. ../../../nvm.sh # #die () { echo $@ ; cleanup ; exit 1; } #cleanup () { # rm -rf ../../../alias/stable # rm -rf ../../../alias/unstable # rm -rf ../../../v0.8.1 # rm -rf ../../../v0.9.1 #} # #mkdir ../../../v0.8.1 #mkdir ../../../v0.9.1 # #EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" #STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" # #EXPECTED_UNSTABLE="$(nvm_print_implicit_alias local unstable)" #UNSTABLE_VERSION="$(nvm_version "$EXPECTED_UNSTABLE")" # #[ "_$STABLE_VERSION" != "_$UNSTABLE_VERSION" ] \ # || die "stable and unstable versions are the same!" # #nvm alias stable "$EXPECTED_UNSTABLE" #nvm alias unstable "$EXPECTED_STABLE" # #NVM_ALIAS_OUTPUT=$(nvm alias) # #echo "$NVM_ALIAS_OUTPUT" | \grep -e "^stable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION)$" \ # || die "nvm alias did not contain the overridden 'stable' alias" # #echo "$NVM_ALIAS_OUTPUT" | \grep -e "^unstable -> $EXPECTED_STABLE (-> $STABLE_VERSION)$" \ # || die "nvm alias did not contain the overridden 'unstable' alias" # #cleanup # } @test './Aliases/Running "nvm alias" should list all aliases.' { ##!/bin/sh # #. ../../../nvm.sh # #die () { echo $@ ; exit 1; } # #NVM_ALIAS_OUTPUT=$(nvm alias) #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-1 -> 0.0.1 (-> v0.0.1)$' \ # || die "did not find test-stable-1 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-2 -> 0.0.2 (-> v0.0.2)$' \ # || die "did not find test-stable-2 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-3 -> 0.0.3 (-> v0.0.3)$' \ # || die "did not find test-stable-3 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-4 -> 0.0.4 (-> v0.0.4)$' \ # || die "did not find test-stable-4 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-5 -> 0.0.5 (-> v0.0.5)$' \ # || die "did not find test-stable-5 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-6 -> 0.0.6 (-> v0.0.6)$' \ # || die "did not find test-stable-6 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-7 -> 0.0.7 (-> v0.0.7)$' \ # || die "did not find test-stable-7 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-8 -> 0.0.8 (-> v0.0.8)$' \ # || die "did not find test-stable-8 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-9 -> 0.0.9 (-> v0.0.9)$' \ # || die "did not find test-stable-9 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-10 -> 0.0.10 (-> v0.0.10)$' \ # || die "did not find test-stable-10 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-1 -> 0.1.1 (-> v0.1.1)$' \ # || die "did not find test-unstable-1 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-2 -> 0.1.2 (-> v0.1.2)$' \ # || die "did not find test-unstable-2 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-3 -> 0.1.3 (-> v0.1.3)$' \ # || die "did not find test-unstable-3 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-4 -> 0.1.4 (-> v0.1.4)$' \ # || die "did not find test-unstable-4 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-5 -> 0.1.5 (-> v0.1.5)$' \ # || die "did not find test-unstable-5 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-6 -> 0.1.6 (-> v0.1.6)$' \ # || die "did not find test-unstable-6 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-7 -> 0.1.7 (-> v0.1.7)$' \ # || die "did not find test-unstable-7 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-8 -> 0.1.8 (-> v0.1.8)$' \ # || die "did not find test-unstable-8 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-9 -> 0.1.9 (-> v0.1.9)$' \ # || die "did not find test-unstable-9 alias" #echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-10 -> 0.1.10 (-> v0.1.10)$' \ # || die "did not find test-unstable-10 alias" # } @test './Aliases/setup' { ##!/bin/sh # #for i in $(seq 1 10) # do # echo 0.0.$i > ../../../alias/test-stable-$i # mkdir -p ../../../v0.0.$i # echo 0.1.$i > ../../../alias/test-unstable-$i # mkdir -p ../../../v0.1.$i #done } @test './Aliases/teardown' { ##!/bin/sh # #for i in $(seq 1 10) # do # rm -f "../../../alias/test-stable-$i" # rm -rf "../../../v0.0.$i" # rm -f "../../../alias/test-unstable-$i" # rm -rf "../../../v0.1.$i" #done # #rm -f "../../../alias/stable" #rm -f "../../../alias/unstable" # } @test './Listing versions/Running "nvm ls 0.0.2" should display only version 0.0.2.' { ##!/bin/sh # #mkdir ../../../v0.0.2 #mkdir ../../../v0.0.20 # #. ../../../nvm.sh # #die () { echo $@ ; exit 1; } # ## The result should contain only the appropriate version numbers. # #nvm ls 0.0.2 | grep 'v0.0.2' > /dev/null #if [ $? -eq 0 ]; then # echo '"nvm ls 0.0.2" contained v0.0.2' #fi # #nvm ls 0.0.2 | grep 'v0.0.20' > /dev/null #if [ $? -eq 0 ]; then # die '"nvm ls 0.0.2" contained v0.0.20' #fi # } @test './Listing versions/Running "nvm ls 0.2" should display only 0.2.x versions.' { ##!/bin/sh # #mkdir ../../../v0.1.3 #mkdir ../../../v0.2.3 #mkdir ../../../v0.20.3 # #. ../../../nvm.sh # #die () { echo $@ ; exit 1; } # ## The result should contain only the appropriate version numbers. # #nvm ls 0.1 | grep 'v0.2.3' > /dev/null #if [ $? -eq 0 ]; then # echo '"nvm ls 0.1" contained v0.2.3' #fi # #nvm ls 0.1 | grep 'v0.20.3' > /dev/null #if [ $? -eq 0 ]; then # die '"nvm ls 0.1" contained v0.20.3' #fi # #nvm ls 0.1 | grep 'v0.1.3' > /dev/null #if [ $? -ne 0 ]; then # die '"nvm ls 0.1" did not contain v0.1.3' #fi # #nvm ls 0.2 | grep 'v0.2.3' > /dev/null #if [ $? -ne 0 ]; then # die '"nvm ls 0.2" did not contain v0.2.3' #fi # #nvm ls 0.2 | grep 'v0.20.3' > /dev/null #if [ $? -eq 0 ]; then # die '"nvm ls 0.2" contained v0.20.3' #fi # #nvm ls 0.2 | grep 'v0.2.3' > /dev/null #if [ $? -ne 0 ]; then # die '"nvm ls 0.2" did not contain v0.2.3' #fi } @test './Listing versions/Running "nvm ls foo" should return a nonzero exit code when not found' { # #!/bin/sh # #. ../../../nvm.sh # #nvm ls nonexistent_version #[ "$?" = "3" ] # } @test './Listing versions/Running "nvm ls node" should return a nonzero exit code when not found' { # #!/bin/sh # #. ../../../nvm.sh # #nvm ls node #[ "$?" = "3" ] # } @test './Listing versions/Running "nvm ls stable" and "nvm ls unstable" should return the appropriate implicit alias' { # #!/bin/sh # #. ../../../nvm.sh # #die () { echo $@ ; exit 1; } # #mkdir ../../../v0.2.3 #mkdir ../../../v0.3.3 # #EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" #STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" # #EXPECTED_UNSTABLE="$(nvm_print_implicit_alias local unstable)" #UNSTABLE_VERSION="$(nvm_version "$EXPECTED_UNSTABLE")" # #nvm ls stable | \grep "$STABLE_VERSION" >/dev/null \ # || die "expected 'nvm ls stable' to give $STABLE_VERSION, got $(nvm ls stable)" # #nvm ls unstable | \grep "$UNSTABLE_VERSION" >/dev/null \ # || die "expected 'nvm ls unstable' to give $UNSTABLE_VERSION, got $(nvm ls unstable)" # #mkdir ../../../v0.1.2 #nvm alias stable 0.1 # #nvm ls stable | \grep -v "$STABLE_VERSION" >/dev/null \ # || die "'nvm ls stable' contained $STABLE_VERSION instead of v0.1.2" #nvm ls stable | \grep v0.1.2 >/dev/null \ # || die "'nvm ls stable' did not contain v0.1.2" # } @test './Listing versions/Running "nvm ls system" should include "system" when appropriate' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #mkdir -p ../../../v0.0.1 #mkdir -p ../../../v0.0.3 #mkdir -p ../../../v0.0.9 #mkdir -p ../../../v0.3.1 #mkdir -p ../../../v0.3.3 #mkdir -p ../../../v0.3.9 # #nvm_has_system_node() { return 0; } #nvm ls system | grep system 2>&1 > /dev/null #[ $? -eq 0 ] || die '"nvm ls system" did not contain "system" when system node is present' # #nvm_has_system_node() { return 1; } #nvm ls system | grep system 2>&1 > /dev/null #[ $? -ne 0 ] || die '"nvm ls system" contained "system" when system node is not present' # } @test './Listing versions/Running "nvm ls" should display all installed versions.' { ##!/bin/sh # #. ../../../nvm.sh # #mkdir ../../../v0.0.1 #mkdir ../../../v0.0.3 #mkdir ../../../v0.0.9 #mkdir ../../../v0.3.1 #mkdir ../../../v0.3.3 #mkdir ../../../v0.3.9 # ## The result should contain the version numbers. #nvm ls | grep v0.0.1 && #nvm ls | grep v0.0.3 && #nvm ls | grep v0.0.9 && #nvm ls | grep v0.3.1 && #nvm ls | grep v0.3.3 && #nvm ls | grep v0.3.9 } @test './Listing versions/Running "nvm ls" should filter out ".nvm"' { ##!/bin/sh # #mkdir ../../../v0.1.3 #mkdir ../../../v0.2.3 # #. ../../../nvm.sh # #[ -z `nvm ls | grep '^ *\.'` ] ## The result should contain only the appropriate version numbers. } @test './Listing versions/Running "nvm ls" should filter out "versions"' { ##!/bin/sh # #mkdir ../../../v0.1.3 #mkdir ../../../v0.2.3 #mkdir ../../../versions # #. ../../../nvm.sh # #[ -z "$(nvm ls | \grep 'versions')" ] ## The result should contain only the appropriate version numbers. # } @test './Listing versions/Running "nvm ls" should include "system" when appropriate' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #mkdir -p ../../../v0.0.1 #mkdir -p ../../../v0.0.3 #mkdir -p ../../../v0.0.9 #mkdir -p ../../../v0.3.1 #mkdir -p ../../../v0.3.3 #mkdir -p ../../../v0.3.9 # #nvm_has_system_node() { return 0; } #nvm ls | grep system 2>&1 > /dev/null #[ $? -eq 0 ] || die '"nvm ls" did not contain "system" when system node is present' # #nvm_has_system_node() { return 1; } #nvm ls | grep system 2>&1 > /dev/null #[ $? -ne 0 ] || die '"nvm ls" contained "system" when system node is not present' # } @test './Listing versions/Running "nvm ls" should list versions in the "versions" directory' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #mkdir -p ../../../versions/v0.12.1 #mkdir ../../../v0.1.3 # #. ../../../nvm.sh # #nvm ls 0.12 | grep v0.12.1 || die '"nvm ls" did not list a version in the versions/ directory' #nvm ls 0.1 | grep v0.1.3 || die '"nvm ls" did not list a version not in the versions/ directory' # } @test './Listing versions/Running "nvm ls" with node-like versioning vx.x.x should only list a matched version' { ##!/bin/sh # #mkdir ../../../v0.1.2 # #. ../../../nvm.sh # #nvm ls v0.1 | grep v0.1.2 && #nvm ls v0.1.2 | grep v0.1.2 && #nvm ls v0.1. | grep v0.1.2 && #nvm ls v0.1.1 | grep N/A # } @test './Listing versions/teardown' { #rmdir ../../../v0.0.1 >/dev/null 2>&1 #rmdir ../../../v0.0.2 >/dev/null 2>&1 #rmdir ../../../v0.0.3 >/dev/null 2>&1 #rmdir ../../../v0.0.9 >/dev/null 2>&1 #rmdir ../../../v0.0.20 >/dev/null 2>&1 #rmdir ../../../v0.1.2 >/dev/null 2>&1 #rmdir ../../../v0.1.3 >/dev/null 2>&1 #rmdir ../../../v0.2.3 >/dev/null 2>&1 #rmdir ../../../v0.3.1 >/dev/null 2>&1 #rmdir ../../../v0.3.3 >/dev/null 2>&1 #rmdir ../../../v0.3.9 >/dev/null 2>&1 #rmdir ../../../v0.20.3 >/dev/null 2>&1 #rmdir ../../../versions >/dev/null 2>&1 #unalias nvm_has_system_node >/dev/null 2>&1 #rm -f ../../../alias/stable >/dev/null 2>&1 #rm -f ../../../alias/unstable >/dev/null 2>&1 # } @test './Running "nvm alias" should create a file in the alias directory.' { ##!/bin/sh # #. ../../nvm.sh #nvm alias test v0.1.2 #[ "$(cat ../../alias/test)" = "v0.1.2" ] } @test './Running "nvm current" should display current nvm environment.' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../nvm.sh # #nvm deactivate 2>&1 # #[ "$(nvm current)" = "system" ] || [ "$(nvm current)" = "none" ] || die '"nvm current" did not report "system" or "none" when deactivated' # } @test './Running "nvm deactivate" should unset the nvm environment variables.' { ##!/bin/sh # #mkdir -p ../../v0.2.3 # #die () { echo $@ ; exit 1; } # #[ `expr $PATH : ".*v0.2.3/.*/bin"` = 0 ] || echo "WARNING: Unexpectedly found v0.2.3 already active" >&2 # #. ../../nvm.sh #nvm use v0.2.3 || die "Failed to activate v0.2.3" #[ `expr "$PATH" : ".*v0.2.3/.*/bin"` != 0 ] || die "PATH not set up properly" #[ `expr "$NODE_PATH" : ".*v0.2.3/.*/lib/node_modules"` = 0 ] || die "NODE_PATH should not contain (npm root -g)" ## ^ note: NODE_PATH should not contain `npm root -g` since globals should not be requireable # #nvm deactivate || die "Failed to deactivate v0.2.3" #[ `expr "$PATH" : ".*v0.2.3/.*/bin"` = 0 ] || die "PATH not cleaned properly" #[ `expr "$NODE_PATH" : ".*v0.2.3/.*/lib/node_modules"` = 0 ] || die "NODE_PATH not cleaned properly" } @test './Running "nvm install" with "--reinstall-packages-from" requires a valid version' { ##!/bin/sh # #die () { echo $@ ; cleanup ; exit 1; } #cleanup () { # rm -rf ../../v0.10.4 #} # #mkdir ../../v0.10.4 # #. ../../nvm.sh # #nvm deactivate >/dev/null 2>&1 # #INSTALL_ERROR_MSG="$(nvm install v0.10.5 --reinstall-packages-from=0.11 2>&1)" #EXPECTED_ERROR_MSG="If --reinstall-packages-from is provided, it must point to an installed version of node." #[ "~$INSTALL_ERROR_MSG" = "~$EXPECTED_ERROR_MSG" ] \ # || die ""nvm install --reinstall-packages-from" should fail when given an uninstalled version: expected '$EXPECTED_ERROR_MSG', got '$INSTALL_ERROR_MSG'" # #INSTALL_EXIT_CODE="$(nvm install v0.10.5 --reinstall-packages-from=0.11 >/dev/null 2>&1; echo $?)" #[ "~$INSTALL_EXIT_CODE" = "~5" ] \ # || die ""nvm install --reinstall-packages-from" should exit with code 5 when given an uninstalled version, got $INSTALL_EXIT_CODE" # #INSTALL_ERROR_MSG="$(nvm install v0.10.5 --reinstall-packages-from=0.10.5 2>&1)" #EXPECTED_ERROR_MSG="You can't reinstall global packages from the same version of node you're installing." #[ "~$INSTALL_ERROR_MSG" = "~$EXPECTED_ERROR_MSG" ] \ # || die ""nvm install --reinstall-packages-from" should fail when given the same version: expected '$EXPECTED_ERROR_MSG', got '$INSTALL_ERROR_MSG'" # #INSTALL_EXIT_CODE="$(nvm install v0.10.5 --reinstall-packages-from=0.10.5 >/dev/null 2>&1; echo $?)" #[ "~$INSTALL_EXIT_CODE" = "~4" ] \ # || die ""nvm install --reinstall-packages-from" should exit with code 4 when given the same version, got $INSTALL_EXIT_CODE" # } @test './Running "nvm install" with an invalid version fails nicely' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../nvm.sh #[ "$(nvm install invalid.invalid 2>&1)" = "Version 'invalid.invalid' not found - try \`nvm ls-remote\` to browse available versions." ] || die "nvm installing an invalid version did not print a nice error message" # } @test './Running "nvm unalias" should remove the alias file.' { ##!/bin/sh # #echo v0.1.2 > ../../alias/test #. ../../nvm.sh #nvm unalias test #! [ -e ../../alias/test ] } @test './Running "nvm uninstall" should remove the appropriate directory.' { ##!/bin/sh # #cd ../.. #mkdir v0.0.1 #mkdir src/node-v0.0.1 # #. ./nvm.sh #nvm uninstall v0.0.1 # #[ ! -d 'v0.0.1' ] && [ ! -d 'src/node-v0.0.1' ] } @test './Running "nvm unload" should unset all function and variables.' { ##!/bin/sh # #fail () { echo $@ ; exit 1; } # #. ../../nvm.sh # #type nvm > /dev/null 2>&1 || fail "NVM not loaded" # #nvm unload # #type nvm > /dev/null 2>&1 && fail "NVM not unloaded" || exit 0 # } @test './Running "nvm use foo" where "foo" is circular aborts' { ##!/bin/sh # #die () { echo $@ ; cleanup ; exit 1; } # #cleanup() { # rm -rf ../../alias/foo #} # #. ../../nvm.sh # #echo 'foo' > ../../alias/foo # #OUTPUT="$(nvm use foo 2>&1)" #EXPECTED_OUTPUT='The alias "foo" leads to an infinite loop. Aborting.' #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] \ # || die "'nvm use foo' did not output '$EXPECTED_OUTPUT'; got '$OUTPUT'" # #EXIT_CODE="$(nvm use foo 2>/dev/null ; echo $?)" #[ "_$EXIT_CODE" = "_8" ] || die "Expected exit code 8; got $EXIT_CODE" # #cleanup; # } @test './Running "nvm use system" should work as expected' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../nvm.sh # #nvm_has_system_node() { return 0; } #[ "$(nvm use system 2>&1 | tail -n1)" = "Now using system version of node: $(node -v)." ] || die "Could not use system version of node" # #nvm_has_system_node() { return 1; } #[ "$(nvm use system 2>&1 | tail -n1)" = "System version of node not found." ] || die "Did not report error, system node not found" #nvm use system 2>&1 > /dev/null || [ $? -eq 127 ] || die "Did not return error code, system node not found" # } @test './Running "nvm use x" should create and change the "current" symlink' { ##!/bin/bash # #export NVM_SYMLINK_CURRENT=true #. ../../nvm.sh # #rm -rf ../../v0.10.29 #mkdir ../../v0.10.29 #nvm use 0.10.29 #rmdir ../../v0.10.29 # #if [ ! -L ../../current ];then # echo "Expected 'current' symlink to be created!" # exit 1 #fi # #oldLink="$(readlink ../../current)" # #if [ "$(basename $oldLink)" != 'v0.10.29' ];then # echo "Expected 'current' to point to v0.10.29 but was $oldLink" # exit 1 #fi # #rm -rf ../../v0.11.13 #mkdir ../../v0.11.13 #nvm use 0.11.13 #rmdir ../../v0.11.13 # #newLink="$(readlink ../../current)" # #if [ "$(basename $newLink)" != 'v0.11.13' ];then # echo "Expected 'current' to point to v0.11.13 but was $newLink" # exit 1 #fi } @test './Running "nvm use x" should not create the "current" symlink if $NVM_SYMLINK_CURRENT is false' { ##!/bin/bash # #. ../../nvm.sh # #TEST_NODE_VERSION="v0.10.29" # #TEST_COUNT=0 #TEST_PASSED=0 #TEST_FAILED=0 # #function registerExpectedSymlink() { # registerResult ${1} #} # #function registerExpectedNoSymlink() { # [ ${1} -ne 0 ] # registerResult $? #} # #function registerResult() { # result=${1} # # TEST_COUNT=$(($TEST_COUNT + 1)) # # [ ${result} -eq 0 ] \ # && TEST_PASSED=$(($TEST_PASSED + 1)) \ # || TEST_FAILED=$(($TEST_FAILED + 1)) #} # #function cleanup() { # rm -rf ../../${TEST_NODE_VERSION} # rm -f ../../current #} # #function runNvmUse() { # mkdir ../../${TEST_NODE_VERSION} # nvm use ${TEST_NODE_VERSION} > /dev/null 2>&1 # rmdir ../../${TEST_NODE_VERSION} #} # #function isCurrentSymlinkPresent() { # [ -L ../../current ] #} # #NVM_SYMLINK_CURRENT=false #cleanup #runNvmUse #isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=false!" #registerExpectedNoSymlink $? # #NVM_SYMLINK_CURRENT=true #cleanup #runNvmUse #isCurrentSymlinkPresent || echo >&2 "Expected 'current' symlink to be created when NVM_SYMLINK_CURRENT=true!" #registerExpectedSymlink $? # #NVM_SYMLINK_CURRENT=garbagevalue #cleanup #runNvmUse #isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT contains a string!" #registerExpectedNoSymlink $? # #NVM_SYMLINK_CURRENT=0 #cleanup #runNvmUse #isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=0!" #registerExpectedNoSymlink $? # #NVM_SYMLINK_CURRENT=1 #cleanup #runNvmUse #isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=1!" #registerExpectedNoSymlink $? # #unset NVM_SYMLINK_CURRENT #cleanup #runNvmUse #isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT has been unset (default behaviour)!" #registerExpectedNoSymlink $? # #cleanup # #[ ${TEST_FAILED} -ne 0 ] && echo "${TEST_COUNT} tested, ${TEST_PASSED} passed, ${TEST_FAILED} failed" && exit 1 || true # } @test './setup' { ##!/bin/sh # #( # cd ../.. # # # Back up # # type setopt >/dev/null 2>&1 && setopt NULL_GLOB # type shopt >/dev/null 2>&1 && shopt -s nullglob # rm -Rf v* src alias # mkdir src alias #) } @test './setup_dir' { ##!/bin/sh # #( # cd ../.. # # # Back up # # mkdir -p bak # for SRC in v* src alias; do # [ -e "$SRC" ] && mv "$SRC" bak # done # if [ -d versions ]; then # mv versions bak # fi # true #) } @test './Sourcing nvm.sh should make the nvm command available.' { ##!/bin/sh # #. ../../nvm.sh #nvm } @test './teardown' { ##!/bin/sh # ## Remove temporary files #( # cd ../.. # # type setopt >/dev/null 2>&1 && setopt NULL_GLOB # type shopt >/dev/null 2>&1 && shopt -s nullglob # rm -fR v* src alias #) } @test './teardown_dir' { ##!/bin/sh # #( # cd ../.. # # # Restore # if [ -d bak ] # then # mv bak/* . > /dev/null 2>&1 || sleep 0s # rmdir bak # fi # mkdir -p src alias #) } @test './Unit tests/nvm_alias' { ##!/bin/sh # #die () { echo $@ ; cleanup ; exit 1; } # #cleanup () { # rm -rf ../../../alias/test #} # #. ../../../nvm.sh # #OUTPUT="$(nvm_alias 2>&1)" #EXPECTED_OUTPUT='An alias is required.' #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_alias' produced wrong output; got $OUTPUT" # #EXIT_CODE="$(nvm_alias >/dev/null 2>&1 ; echo $?)" #[ "_$EXIT_CODE" = "_1" ] || die "'nvm_alias' exited with $EXIT_CODE, expected 1" # #rm -rf ../../../alias/nonexistent # #OUTPUT="$(nvm_alias nonexistent 2>&1)" #EXPECTED_OUTPUT='Alias does not exist.' #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_alias nonexistent' produced wrong output; got $OUTPUT" # #EXIT_CODE="$(nvm_alias nonexistent >/dev/null 2>&1 ; echo $?)" #[ "_$EXIT_CODE" = "_2" ] || die "'nvm_alias nonexistent' exited with $EXIT_CODE, expected 2" # #EXPECTED_OUTPUT="0.10" #nvm alias test "$EXPECTED_OUTPUT" || die "'nvm alias test $EXPECTED_OUTPUT' failed" #OUTPUT="$(nvm_alias test)" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_alias test' produced wrong output; got $OUTPUT" # #cleanup # } @test './Unit tests/nvm_checksum' { ##!/bin/sh # #cleanup () { # rm tmp/emptyfile tmp/testfile # rmdir tmp #} #die () { echo $@ ; cleanup; exit 1; } # #. ../../../nvm.sh # #mkdir -p tmp #touch tmp/emptyfile #echo -n "test" > tmp/testfile # #nvm_checksum tmp/emptyfile "da39a3ee5e6b4b0d3255bfef95601890afd80709" || die "nvm_checksum on an empty file did not match the SHA1 digest of the empty string" #nvm_checksum tmp/testfile "da39a3ee5e6b4b0d3255bfef95601890afd80709" && die "nvm_checksum allowed a bad checksum" # #cleanup } @test './Unit tests/nvm_find_up' { ##!/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 # } @test './Unit tests/nvm_format_version' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #OUTPUT="$(nvm_format_version 0.1.2)" #EXPECTED_OUTPUT="v0.1.2" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_format_version 0.1.2 did not return $EXPECTED_OUTPUT; got $OUTPUT" # #OUTPUT="$(nvm_format_version 0.1)" #EXPECTED_OUTPUT="v0.1.0" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_format_version 0.1.0 did not return $EXPECTED_OUTPUT; got $OUTPUT" # } @test './Unit tests/nvm_has' { ##!/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" # } @test './Unit tests/nvm_has_system_node' { ##!/bin/sh # #cleanup () { # rm ../../../v0.1.2/node # rmdir ../../../v0.1.2 #} #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #mkdir ../../../v0.1.2 #touch ../../../v0.1.2/node # #nvm use 0.1.2 # #if command -v node; then # nvm_has_system_node #else # ! nvm_has_system_node #fi # #nvm deactivate /dev/null 2>&1 # #if command -v node; then # nvm_has_system_node #else # ! nvm_has_system_node #fi # } @test './Unit tests/nvm_ls_current' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #return_zero () { return 0; } # #[ "$(nvm deactivate > /dev/null 2>&1 ; nvm_ls_current)" = "system" ] || die 'when deactivated, did not return "system"' # #TEST_PWD=$(pwd) #TEST_DIR="$TEST_PWD/nvm_ls_current_tmp" #rm -rf "$TEST_DIR" #mkdir "$TEST_DIR" #ln -s "$(which which)" "$TEST_DIR/which" #ln -s "$(which dirname)" "$TEST_DIR/dirname" # #[ "$(PATH="$TEST_DIR" nvm_ls_current)" = "none" ] || die 'when node not installed, nvm_ls_current did not return "none"' #[ "@$(PATH="$TEST_DIR" nvm_ls_current 2> /dev/stdout 1> /dev/null)@" = "@@" ] || die 'when node not installed, nvm_ls_current returned error output' # #echo "#!/bin/bash" > "$TEST_DIR/node" #echo "echo 'VERSION FOO!'" > "$TEST_DIR/node" #chmod a+x "$TEST_DIR/node" # #[ "$(alias nvm_tree_contains_path='return_zero' && PATH="$TEST_DIR" nvm_ls_current)" = "VERSION FOO!" ] || die 'when activated, did not return nvm node version' # #rm -rf "$TEST_DIR" # } @test './Unit tests/nvm_ls_remote' { ##!/bin/sh # #die () { echo $@ ; cleanup ; exit 1; } # #cleanup() { # unset -f nvm_download #} # #. ../../../nvm.sh # ## sample output at the time the test was written #nvm_download() { # echo 'foo "v0.10.0' # echo 'foo "v0.10.0' # echo 'foo "v0.10.1' # echo 'foo "v0.10.1' # echo 'foo "v0.10.10' # echo 'foo "v0.10.10' # echo 'foo "v0.10.11' # echo 'foo "v0.10.11' # echo 'foo "v0.10.12' # echo 'foo "v0.10.12' # echo 'foo "v0.10.13' # echo 'foo "v0.10.13' # echo 'foo "v0.10.14' # echo 'foo "v0.10.14' # echo 'foo "v0.10.15' # echo 'foo "v0.10.15' # echo 'foo "v0.10.16' # echo 'foo "v0.10.16' # echo 'foo "v0.10.16' # echo 'foo "v0.10.16' # echo 'foo "v0.10.17' # echo 'foo "v0.10.17' # echo 'foo "v0.10.18' # echo 'foo "v0.10.18' # echo 'foo "v0.10.19' # echo 'foo "v0.10.19' # echo 'foo "v0.10.2' # echo 'foo "v0.10.2' # echo 'foo "v0.10.20' # echo 'foo "v0.10.20' # echo 'foo "v0.10.21' # echo 'foo "v0.10.21' # echo 'foo "v0.10.22' # echo 'foo "v0.10.22' # echo 'foo "v0.10.23' # echo 'foo "v0.10.23' # echo 'foo "v0.10.24' # echo 'foo "v0.10.24' # echo 'foo "v0.10.25' # echo 'foo "v0.10.25' # echo 'foo "v0.10.26' # echo 'foo "v0.10.26' # echo 'foo "v0.10.27' # echo 'foo "v0.10.27' # echo 'foo "v0.10.28' # echo 'foo "v0.10.28' # echo 'foo "v0.10.29' # echo 'foo "v0.10.29' # echo 'foo "v0.10.3' # echo 'foo "v0.10.3' # echo 'foo "v0.10.30' # echo 'foo "v0.10.30' # echo 'foo "v0.10.31' # echo 'foo "v0.10.31' # echo 'foo "v0.10.32' # echo 'foo "v0.10.32' # echo 'foo "v0.10.4' # echo 'foo "v0.10.4' # echo 'foo "v0.10.5' # echo 'foo "v0.10.5' # echo 'foo "v0.10.6' # echo 'foo "v0.10.6' # echo 'foo "v0.10.7' # echo 'foo "v0.10.7' # echo 'foo "v0.10.8' # echo 'foo "v0.10.8' # echo 'foo "v0.10.9' # echo 'foo "v0.10.9' # echo 'foo "v0.11.0' # echo 'foo "v0.11.0' # echo 'foo "v0.11.1' # echo 'foo "v0.11.1' # echo 'foo "v0.11.10' # echo 'foo "v0.11.10' # echo 'foo "v0.11.11' # echo 'foo "v0.11.11' # echo 'foo "v0.11.12' # echo 'foo "v0.11.12' # echo 'foo "v0.11.13' # echo 'foo "v0.11.13' # echo 'foo "v0.11.14' # echo 'foo "v0.11.14' # echo 'foo "v0.11.2' # echo 'foo "v0.11.2' # echo 'foo "v0.11.3' # echo 'foo "v0.11.3' # echo 'foo "v0.11.4' # echo 'foo "v0.11.4' # echo 'foo "v0.11.5' # echo 'foo "v0.11.5' # echo 'foo "v0.11.6' # echo 'foo "v0.11.6' # echo 'foo "v0.11.7' # echo 'foo "v0.11.7' # echo 'foo "v0.11.8' # echo 'foo "v0.11.8' # echo 'foo "v0.11.9' # echo 'foo "v0.11.9' # echo 'foo "v0.5.1' # echo 'foo "v0.5.1' # echo 'foo "v0.5.10' # echo 'foo "v0.5.10' # echo 'foo "v0.5.2' # echo 'foo "v0.5.2' # echo 'foo "v0.5.3' # echo 'foo "v0.5.3' # echo 'foo "v0.5.4' # echo 'foo "v0.5.4' # echo 'foo "v0.5.5' # echo 'foo "v0.5.5' # echo 'foo "v0.5.6' # echo 'foo "v0.5.6' # echo 'foo "v0.5.7' # echo 'foo "v0.5.7' # echo 'foo "v0.5.8' # echo 'foo "v0.5.8' # echo 'foo "v0.5.9' # echo 'foo "v0.5.9' # echo 'foo "v0.6.0' # echo 'foo "v0.6.0' # echo 'foo "v0.6.1' # echo 'foo "v0.6.1' # echo 'foo "v0.6.10' # echo 'foo "v0.6.10' # echo 'foo "v0.6.11' # echo 'foo "v0.6.11' # echo 'foo "v0.6.12' # echo 'foo "v0.6.12' # echo 'foo "v0.6.13' # echo 'foo "v0.6.13' # echo 'foo "v0.6.14' # echo 'foo "v0.6.14' # echo 'foo "v0.6.15' # echo 'foo "v0.6.15' # echo 'foo "v0.6.16' # echo 'foo "v0.6.16' # echo 'foo "v0.6.17' # echo 'foo "v0.6.17' # echo 'foo "v0.6.18' # echo 'foo "v0.6.18' # echo 'foo "v0.6.19' # echo 'foo "v0.6.19' # echo 'foo "v0.6.2' # echo 'foo "v0.6.2' # echo 'foo "v0.6.20' # echo 'foo "v0.6.20' # echo 'foo "v0.6.21' # echo 'foo "v0.6.21' # echo 'foo "v0.6.3' # echo 'foo "v0.6.3' # echo 'foo "v0.6.4' # echo 'foo "v0.6.4' # echo 'foo "v0.6.5' # echo 'foo "v0.6.5' # echo 'foo "v0.6.6' # echo 'foo "v0.6.6' # echo 'foo "v0.6.7' # echo 'foo "v0.6.7' # echo 'foo "v0.6.8' # echo 'foo "v0.6.8' # echo 'foo "v0.6.9' # echo 'foo "v0.6.9' # echo 'foo "v0.7.0' # echo 'foo "v0.7.0' # echo 'foo "v0.7.1' # echo 'foo "v0.7.1' # echo 'foo "v0.7.10' # echo 'foo "v0.7.10' # echo 'foo "v0.7.11' # echo 'foo "v0.7.11' # echo 'foo "v0.7.12' # echo 'foo "v0.7.12' # echo 'foo "v0.7.2' # echo 'foo "v0.7.2' # echo 'foo "v0.7.3' # echo 'foo "v0.7.3' # echo 'foo "v0.7.4' # echo 'foo "v0.7.4' # echo 'foo "v0.7.5' # echo 'foo "v0.7.5' # echo 'foo "v0.7.6' # echo 'foo "v0.7.6' # echo 'foo "v0.7.7' # echo 'foo "v0.7.7' # echo 'foo "v0.7.8' # echo 'foo "v0.7.8' # echo 'foo "v0.7.9' # echo 'foo "v0.7.9' # echo 'foo "v0.8.0' # echo 'foo "v0.8.0' # echo 'foo "v0.8.1' # echo 'foo "v0.8.1' # echo 'foo "v0.8.10' # echo 'foo "v0.8.10' # echo 'foo "v0.8.11' # echo 'foo "v0.8.11' # echo 'foo "v0.8.12' # echo 'foo "v0.8.12' # echo 'foo "v0.8.13' # echo 'foo "v0.8.13' # echo 'foo "v0.8.14' # echo 'foo "v0.8.14' # echo 'foo "v0.8.15' # echo 'foo "v0.8.15' # echo 'foo "v0.8.16' # echo 'foo "v0.8.16' # echo 'foo "v0.8.17' # echo 'foo "v0.8.17' # echo 'foo "v0.8.18' # echo 'foo "v0.8.18' # echo 'foo "v0.8.19' # echo 'foo "v0.8.19' # echo 'foo "v0.8.2' # echo 'foo "v0.8.2' # echo 'foo "v0.8.20' # echo 'foo "v0.8.20' # echo 'foo "v0.8.21' # echo 'foo "v0.8.21' # echo 'foo "v0.8.22' # echo 'foo "v0.8.22' # echo 'foo "v0.8.23' # echo 'foo "v0.8.23' # echo 'foo "v0.8.24' # echo 'foo "v0.8.24' # echo 'foo "v0.8.25' # echo 'foo "v0.8.25' # echo 'foo "v0.8.26' # echo 'foo "v0.8.26' # echo 'foo "v0.8.27' # echo 'foo "v0.8.27' # echo 'foo "v0.8.28' # echo 'foo "v0.8.28' # echo 'foo "v0.8.3' # echo 'foo "v0.8.3' # echo 'foo "v0.8.4' # echo 'foo "v0.8.4' # echo 'foo "v0.8.5' # echo 'foo "v0.8.5' # echo 'foo "v0.8.6' # echo 'foo "v0.8.6' # echo 'foo "v0.8.7' # echo 'foo "v0.8.7' # echo 'foo "v0.8.8' # echo 'foo "v0.8.8' # echo 'foo "v0.8.9' # echo 'foo "v0.8.9' # echo 'foo "v0.9.0' # echo 'foo "v0.9.0' # echo 'foo "v0.9.1' # echo 'foo "v0.9.1' # echo 'foo "v0.9.10' # echo 'foo "v0.9.10' # echo 'foo "v0.9.11' # echo 'foo "v0.9.11' # echo 'foo "v0.9.12' # echo 'foo "v0.9.12' # echo 'foo "v0.9.2' # echo 'foo "v0.9.2' # echo 'foo "v0.9.3' # echo 'foo "v0.9.3' # echo 'foo "v0.9.4' # echo 'foo "v0.9.4' # echo 'foo "v0.9.5' # echo 'foo "v0.9.5' # echo 'foo "v0.9.6' # echo 'foo "v0.9.6' # echo 'foo "v0.9.7' # echo 'foo "v0.9.7' # echo 'foo "v0.9.8' # echo 'foo "v0.9.8' # echo 'foo "v0.9.9' # echo 'foo "v0.9.9' # echo 'foo "v0.1.100' # echo 'foo "v0.1.100' # echo 'foo "v0.1.101' # echo 'foo "v0.1.101' # echo 'foo "v0.1.102' # echo 'foo "v0.1.102' # echo 'foo "v0.1.103' # echo 'foo "v0.1.103' # echo 'foo "v0.1.104' # echo 'foo "v0.1.104' # echo 'foo "v0.1.14' # echo 'foo "v0.1.14' # echo 'foo "v0.1.15' # echo 'foo "v0.1.15' # echo 'foo "v0.1.16' # echo 'foo "v0.1.16' # echo 'foo "v0.1.17' # echo 'foo "v0.1.17' # echo 'foo "v0.1.18' # echo 'foo "v0.1.18' # echo 'foo "v0.1.19' # echo 'foo "v0.1.19' # echo 'foo "v0.1.20' # echo 'foo "v0.1.20' # echo 'foo "v0.1.21' # echo 'foo "v0.1.21' # echo 'foo "v0.1.22' # echo 'foo "v0.1.22' # echo 'foo "v0.1.23' # echo 'foo "v0.1.23' # echo 'foo "v0.1.24' # echo 'foo "v0.1.24' # echo 'foo "v0.1.25' # echo 'foo "v0.1.25' # echo 'foo "v0.1.26' # echo 'foo "v0.1.26' # echo 'foo "v0.1.27' # echo 'foo "v0.1.27' # echo 'foo "v0.1.28' # echo 'foo "v0.1.28' # echo 'foo "v0.1.29' # echo 'foo "v0.1.29' # echo 'foo "v0.1.30' # echo 'foo "v0.1.30' # echo 'foo "v0.1.31' # echo 'foo "v0.1.31' # echo 'foo "v0.1.32' # echo 'foo "v0.1.32' # echo 'foo "v0.1.33' # echo 'foo "v0.1.33' # echo 'foo "v0.1.90' # echo 'foo "v0.1.90' # echo 'foo "v0.1.91' # echo 'foo "v0.1.91' # echo 'foo "v0.1.92' # echo 'foo "v0.1.92' # echo 'foo "v0.1.93' # echo 'foo "v0.1.93' # echo 'foo "v0.1.94' # echo 'foo "v0.1.94' # echo 'foo "v0.1.95' # echo 'foo "v0.1.95' # echo 'foo "v0.1.96' # echo 'foo "v0.1.96' # echo 'foo "v0.1.97' # echo 'foo "v0.1.97' # echo 'foo "v0.1.98' # echo 'foo "v0.1.98' # echo 'foo "v0.1.99' # echo 'foo "v0.1.99' # echo 'foo "v0.10.14' # echo 'foo "v0.10.14' # echo 'foo "v0.2.0' # echo 'foo "v0.2.0' # echo 'foo "v0.2.1' # echo 'foo "v0.2.1' # echo 'foo "v0.2.2' # echo 'foo "v0.2.2' # echo 'foo "v0.2.3' # echo 'foo "v0.2.3' # echo 'foo "v0.2.4' # echo 'foo "v0.2.4' # echo 'foo "v0.2.5' # echo 'foo "v0.2.5' # echo 'foo "v0.2.6' # echo 'foo "v0.2.6' # echo 'foo "v0.3.0' # echo 'foo "v0.3.0' # echo 'foo "v0.3.1' # echo 'foo "v0.3.1' # echo 'foo "v0.3.2' # echo 'foo "v0.3.2' # echo 'foo "v0.3.3' # echo 'foo "v0.3.3' # echo 'foo "v0.3.4' # echo 'foo "v0.3.4' # echo 'foo "v0.3.5' # echo 'foo "v0.3.5' # echo 'foo "v0.3.6' # echo 'foo "v0.3.6' # echo 'foo "v0.3.7' # echo 'foo "v0.3.7' # echo 'foo "v0.3.8' # echo 'foo "v0.3.8' # echo 'foo "v0.4.0' # echo 'foo "v0.4.0' # echo 'foo "v0.4.1' # echo 'foo "v0.4.1' # echo 'foo "v0.4.10' # echo 'foo "v0.4.10' # echo 'foo "v0.4.11' # echo 'foo "v0.4.11' # echo 'foo "v0.4.12' # echo 'foo "v0.4.12' # echo 'foo "v0.4.2' # echo 'foo "v0.4.2' # echo 'foo "v0.4.3' # echo 'foo "v0.4.3' # echo 'foo "v0.4.4' # echo 'foo "v0.4.4' # echo 'foo "v0.4.5' # echo 'foo "v0.4.5' # echo 'foo "v0.4.6' # echo 'foo "v0.4.6' # echo 'foo "v0.4.7' # echo 'foo "v0.4.7' # echo 'foo "v0.4.8' # echo 'foo "v0.4.8' # echo 'foo "v0.4.9' # echo 'foo "v0.4.9' # echo 'foo "v0.5.0' # echo 'foo "v0.5.0' # echo 'foo "v0.6.1' # echo 'foo "v0.6.1' # echo 'foo "v0.6.10' # echo 'foo "v0.6.10' # echo 'foo "v0.6.11' # echo 'foo "v0.6.11' # echo 'foo "v0.6.12' # echo 'foo "v0.6.12' # echo 'foo "v0.6.13' # echo 'foo "v0.6.13' # echo 'foo "v0.6.2' # echo 'foo "v0.6.2' # echo 'foo "v0.6.3' # echo 'foo "v0.6.3' # echo 'foo "v0.6.4' # echo 'foo "v0.6.4' # echo 'foo "v0.6.5' # echo 'foo "v0.6.5' # echo 'foo "v0.6.6' # echo 'foo "v0.6.6' # echo 'foo "v0.6.7' # echo 'foo "v0.6.7' # echo 'foo "v0.6.8' # echo 'foo "v0.6.8' # echo 'foo "v0.6.9' # echo 'foo "v0.6.9' #} # #OUTPUT="$(nvm_ls_remote foo)" #EXIT_CODE="$(nvm_ls_remote foo >/dev/null 2>&1 ; echo $?)" #[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A" #[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE" # #OUTPUT="$(nvm_ls_remote)" #EXPECTED_OUTPUT="$(nvm_download | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n)" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote did not output expected sorted versions; got $(echo "$OUTPUT") expected $(echo "$EXPECTED_OUTPUT")" # #OUTPUT="$(nvm_ls_remote 0.3)" #EXPECTED_OUTPUT="v0.3.0 #v0.3.1 #v0.3.2 #v0.3.3 #v0.3.4 #v0.3.5 #v0.3.6 #v0.3.7 #v0.3.8" # #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote 0.3 did not output 0.3.x versions; got $OUTPUT" # ## Sanity checks #OUTPUT="$(nvm_print_implicit_alias remote stable)" #EXPECTED_OUTPUT="0.10" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_print_implicit_alias remote stable did not output $EXPECTED_OUTPUT; got $OUTPUT" # #OUTPUT="$(nvm_print_implicit_alias remote unstable)" #EXPECTED_OUTPUT="0.11" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_print_implicit_alias remote unstable did not output $EXPECTED_OUTPUT; got $OUTPUT" # #OUTPUT="$(nvm_ls_remote stable)" #EXPECTED_OUTPUT="v0.10.32" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote stable did not output $EXPECTED_OUTPUT; got $OUTPUT" # #OUTPUT="$(nvm_ls_remote unstable)" #EXPECTED_OUTPUT="v0.11.14" #[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote unstable did not output $EXPECTED_OUTPUT; got $OUTPUT" # #cleanup # } @test './Unit tests/nvm_num_version_groups' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #[ "~$(nvm_num_version_groups)" = "~0" ] || die "no args should give 0" #[ "~$(nvm_num_version_groups a)" = "~1" ] || die "one letter should give 1" # #[ "~$(nvm_num_version_groups 1)" = "~1" ] || die "1 should give 1" #[ "~$(nvm_num_version_groups v1)" = "~1" ] || die "v1 should give 1" #[ "~$(nvm_num_version_groups v1.)" = "~1" ] || die "v1. should give 1" # #[ "~$(nvm_num_version_groups 1.2)" = "~2" ] || die "1.2 should give 2" #[ "~$(nvm_num_version_groups v1.2)" = "~2" ] || die "v1.2 should give 2" #[ "~$(nvm_num_version_groups v1.2.)" = "~2" ] || die "v1.2. should give 2" # #[ "~$(nvm_num_version_groups 1.2.3)" = "~3" ] || die "1.2.3 should give 3" #[ "~$(nvm_num_version_groups v1.2.3)" = "~3" ] || die "v1.2.3 should give 3" #[ "~$(nvm_num_version_groups v1.2.3.)" = "~3" ] || die "v1.2.3. should give 3" # } @test './Unit tests/nvm_prepend_path' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #TEST_PATH=/usr/bin:/usr/local/bin # #NEW_PATH=`nvm_prepend_path "$TEST_PATH" "$NVM_DIR/v0.2.5/bin"` # #[ "$NEW_PATH" = "$NVM_DIR/v0.2.5/bin:/usr/bin:/usr/local/bin" ] || die "Not correctly prepended: $NEW_PATH " # # #EMPTY_PATH= # #NEW_PATH=`nvm_prepend_path "$EMPTY_PATH" "$NVM_DIR/v0.2.5/bin"` # #[ "$NEW_PATH" = "$NVM_DIR/v0.2.5/bin" ] || die "Not correctly prepended: $NEW_PATH " } @test './Unit tests/nvm_print_implicit_alias errors' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #EXPECTED_FIRST_MSG="nvm_print_implicit_alias must be specified with local or remote as the first argument." #[ "_$(nvm_print_implicit_alias 2>&1)" = "_$EXPECTED_FIRST_MSG" ] \ # || die "nvm_print_implicit_alias did not require local|remote as first argument" #[ "_$(nvm_print_implicit_alias foo 2>&1)" = "_$EXPECTED_FIRST_MSG" ] \ # || die "nvm_print_implicit_alias did not require local|remote as first argument" # #FIRST_EXIT_CODE="$(nvm_print_implicit_alias > /dev/null 2>&1 ; echo $?)" #[ "_$FIRST_EXIT_CODE" = "_1" ] \ # || die "nvm_print_implicit_alias without local|remote had wrong exit code: expected 1, got $FIRST_EXIT_CODE" # #EXPECTED_SECOND_MSG="Only implicit aliases 'stable' and 'unstable' are supported." #[ "_$(nvm_print_implicit_alias local 2>&1)" = "_$EXPECTED_SECOND_MSG" ] \ # || die "nvm_print_implicit_alias did not require stable|unstable as second argument" #[ "_$(nvm_print_implicit_alias local foo 2>&1)" = "_$EXPECTED_SECOND_MSG" ] \ # || die "nvm_print_implicit_alias did not require stable|unstable as second argument" # #SECOND_EXIT_CODE="$(nvm_print_implicit_alias local > /dev/null 2>&1 ; echo $?)" #[ "_$SECOND_EXIT_CODE" = "_2" ] \ # || die "nvm_print_implicit_alias without stable|unstable had wrong exit code: expected 2, got $SECOND_EXIT_CODE" # } @test './Unit tests/nvm_print_implicit_alias success' { ##!/bin/sh # #die () { echo $@ ; cleanup ; exit 1; } #cleanup() { # rm -rf ../../../v0.2.3 # rm -rf ../../../v0.3.4 # rm -rf ../../../v0.4.6 # rm -rf ../../../v0.5.7 # rm -rf ../../../v0.7.7 # unset -f nvm_ls_remote #} # #. ../../../nvm.sh # #mkdir ../../../v0.2.3 #mkdir ../../../v0.3.4 #mkdir ../../../v0.4.6 #mkdir ../../../v0.5.7 #mkdir ../../../v0.7.7 # #LATEST_STABLE="$(nvm_print_implicit_alias local stable)" #[ "_$LATEST_STABLE" = "_0.4" ] || die "local stable is not latest even minor: expected 0.4, got $LATEST_STABLE" # #LATEST_UNSTABLE="$(nvm_print_implicit_alias local unstable)" #[ "_$LATEST_UNSTABLE" = "_0.7" ] || die "local unstable is not latest odd minor: expected 0.7, got $LATEST_UNSTABLE" # #nvm_ls_remote() { # echo "v0.4.3" # echo "v0.5.4" # echo "v0.6.6" # echo "v0.7.7" # echo "v0.9.7" # echo "v0.4.3" # echo "v0.5.4" # echo "v0.6.6" # echo "v0.7.7" # echo "v0.9.7" #} # #LATEST_STABLE="$(nvm_print_implicit_alias remote stable)" #[ "_$LATEST_STABLE" = "_0.6" ] || die "remote stable is not latest even minor: expected 0.6, got $LATEST_STABLE" # #LATEST_UNSTABLE="$(nvm_print_implicit_alias remote unstable)" #[ "_$LATEST_UNSTABLE" = "_0.9" ] || die "remote unstable is not latest odd minor: expected 0.9, got $LATEST_UNSTABLE" # #cleanup # } @test './Unit tests/nvm_remote_version' { ##!/bin/sh # #die () { echo $@ ; cleanup ; exit 1; } # #cleanup() { # unset -f nvm_ls_remote #} # #. ../../../nvm.sh # #nvm_ls_remote() { # echo "N/A" #} # #OUTPUT="$(nvm_remote_version foo)" #EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)" # #[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A" #[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE" # #nvm_ls_remote() { # echo "test output" # echo "more test output" # echo "pattern received: _$1_" #} # #OUTPUT="$(nvm_remote_version foo)" #EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)" # #[ "_$OUTPUT" = "_pattern received: _foo_" ] \ # || die "nvm_remote_version foo did not return last line only of nvm_ls_remote foo; got $OUTPUT" #[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_version foo did not exit with 0, got $EXIT_CODE" # #cleanup # } @test './Unit tests/nvm_strip_path' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #TEST_PATH=$NVM_DIR/v0.10.5/bin:/usr/bin:$NVM_DIR/v0.11.5/bin:$NVM_DIR/v0.9.5/bin:/usr/local/bin:$NVM_DIR/v0.2.5/bin # #STRIPPED_PATH=`nvm_strip_path "$TEST_PATH" "/bin"` # #[ "$STRIPPED_PATH" = "/usr/bin:/usr/local/bin" ] || die "Not correctly stripped: $STRIPPED_PATH " } @test './Unit tests/nvm_tree_contains_path' { ##!/bin/sh # #cleanup () { # rm tmp/node # rmdir tmp # rm tmp2/node # rmdir tmp2 #} #die () { echo $@ ; cleanup; exit 1; } # #. ../../../nvm.sh # #mkdir -p tmp #touch tmp/node #mkdir -p tmp2 #touch tmp2/node # #[ "$(nvm_tree_contains_path 2>&1)" = "both the tree and the node path are required" ] || die 'incorrect error message with no args' #[ "$(nvm_tree_contains_path > /dev/null 2>&1 ; echo $?)" = "2" ] || die 'incorrect error code with no args' #[ "$(nvm_tree_contains_path tmp 2>&1)" = "both the tree and the node path are required" ] || die 'incorrect error message with one arg' #[ "$(nvm_tree_contains_path > /dev/null 2>&1 ; echo $?)" = "2" ] || die 'incorrect error code with one arg' # #nvm_tree_contains_path tmp tmp/node || die '"tmp" should contain "tmp/node"' # #nvm_tree_contains_path tmp tmp2/node && die '"tmp" should not contain "tmp2/node"' # #nvm_tree_contains_path tmp2 tmp2/node || die '"tmp2" should contain "tmp2/node"' # #nvm_tree_contains_path tmp2 tmp/node && die '"tmp2" should not contain "tmp/node"' # #cleanup # } @test './Unit tests/nvm_validate_implicit_alias' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #EXPECTED_MSG="Only implicit aliases 'stable' and 'unstable' are supported." #[ "_$(nvm_validate_implicit_alias 2>&1)" = "_$EXPECTED_MSG" ] \ # || die "nvm_validate_implicit_alias did not require stable|unstable" #[ "_$(nvm_validate_implicit_alias foo 2>&1)" = "_$EXPECTED_MSG" ] \ # || die "nvm_validate_implicit_alias did not require stable|unstable" # #EXIT_CODE="$(nvm_validate_implicit_alias >/dev/null 2>&1 ; echo $?)" #[ "_$EXIT_CODE" = "_1" ] \ # || die "nvm_validate_implicit_alias without stable|unstable had wrong exit code: expected 1, got $EXIT_CODE" # #nvm_validate_implicit_alias stable || die "nvm_validate_implicit_alias stable did not exit 0" #nvm_validate_implicit_alias unstable || die "nvm_validate_implicit_alias unstable did not exit 0" # } @test './Unit tests/nvm_version_dir' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #[ "$(nvm_version_dir)" = "$NVM_DIR/versions" ] || die '"nvm_version_dir" did not return new dir path' #[ "$(nvm_version_dir new)" = "$(nvm_version_dir)" ] || die '"nvm_version_dir new" did not return new dir path' #[ "$(nvm_version_dir old)" = "$NVM_DIR" ] || die '"nvm_version_dir old" did not return old dir path' #[ "$(nvm_version_dir foo 2>&1)" = "unknown version dir" ] || die '"nvm_version_dir foo" did not error out' # } @test './Unit tests/nvm_version_greater' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #nvm_version_greater 0.10.0 0.2.12 || die '"nvm_version_greater 0.10.0 0.2.12" did not return true' # #if nvm_version_greater 0.10.0 0.20.12; then # die '"nvm_version_greater 0.10.0 0.20.12" returned true' #fi # #if nvm_version_greater 0.10.0 0.10.0; then # die '"nvm_version_greater" returned false for the same two versions' #fi # } @test './Unit tests/nvm_version_path' { ##!/bin/sh # #die () { echo $@ ; exit 1; } # #. ../../../nvm.sh # #[ "$(nvm_version_path foo)" = "$NVM_DIR/foo" ] || die '"nvm_version_path foo" did not return correct location' #[ "$(nvm_version_path 2>&1)" = "version is required" ] || die '"nvm_version_path" did not error out' #[ "$(nvm_version_path v0.11.0)" = "$NVM_DIR/v0.11.0" ] || die 'old version has the wrong path' #[ "$(nvm_version_path v0.12.0)" = "$NVM_DIR/versions/v0.12.0" ] || die 'new version has the wrong path' # }