diff --git a/test/bats/fast.bats b/test/bats/fast.bats index fff641c..7092f6a 100644 --- a/test/bats/fast.bats +++ b/test/bats/fast.bats @@ -10,7 +10,7 @@ test_debug() { } test_implementing() { - true # set to 'false' to run all tests; set to 'true' to skip implemented tests + false # set to 'false' to run all tests; set to 'true' to skip implemented tests # only used while porting to bats: remove afterward } @@ -140,3 +140,85 @@ teardown() { assert_equal 8 "$status" "Expected exit code 8 (infinite alias loop)" assert_match "$output" 'The alias "foo" leads to an infinite loop. Aborting.' } + +@test 'Running "nvm use system" should work as expected' { + test_implementing && skip + + # NOTE: undocumented assumption of this test is + # that node is installed on the test machine! + # TODO: fix that, by using a mock + + nvm_has_system_node() { return 0; } + run nvm use system + assert_equal 0 "$status" "Expect success in using system node" + assert_match "$output" 'Now using system version of node:' + + nvm_has_system_node() { return 1; } + run nvm use system + assert_equal 127 "$status" "Expect failure when no system node" + assert_match "$output" 'System version of node not found.' +} + +@test 'Running "nvm use x" should create and change the "current" symlink' { + test_implementing && skip + + export NVM_SYMLINK_CURRENT=true + + mkdir -p v0.10.29 + nvm use 0.10.29 + rmdir v0.10.29 + + # TODO make this a proper assert + [ -L current ] # "expected 'current' symlink to be created" + + oldLink="$(readlink current)" + + assert_equal "$(basename $oldLink)" "v0.10.29" "Expected 'current' to point to v0.10.29 but was $oldLink" + + mkdir v0.11.13 + nvm use 0.11.13 + rmdir v0.11.13 + + newlink="$(readlink current)" + + assert_equal "$(basename $newlink)" "v0.11.13" "Expected 'current' to point to v0.11.13 but was $newLink" +} + +@test 'Running "nvm use x" should not create the "current" symlink if $NVM_SYMLINK_CURRENT is false' { + test_implementing && skip + + test_symlink_made() { + local arg="$1" + + mkdir v0.10.29 + + if [ "$arg" = "undef" ] + then + unset NVM_SYMLINK_CURRENT + else + NVM_SYMLINK_CURRENT="$arg" + fi + + run nvm use 0.10.29 + run [ -L current ] + result="$status" + + rm -f current + rmdir v0.10.29 + + return $result + } + + test_symlink_made 'true' + + ! test_symlink_made 'false' + ! test_symlink_made 'garbagevalue' + ! test_symlink_made 0 + ! test_symlink_made 1 + ! test_symlink_made 'undef' +} + +@test 'Sourcing nvm.sh should make the nvm command available.' { + + nvm +} diff --git a/test/bats/fast-raw.bats b/test/bats/unit-tests.bats similarity index 54% rename from test/bats/fast-raw.bats rename to test/bats/unit-tests.bats index 00a5593..8a751de 100644 --- a/test/bats/fast-raw.bats +++ b/test/bats/unit-tests.bats @@ -1,821 +1,35 @@ #!/usr/bin/env bats +load test_helper + NVM_SRC_DIR="${BATS_TEST_DIRNAME}/../.." -load "${NVM_SRC_DIR}/nvm.sh" +source "${NVM_SRC_DIR}/nvm.sh" + +test_debug() { + false # set to 'true' to get setup/teardown in test stderr +} + +test_implementing() { + true # set to 'false' to run all tests; set to 'true' to skip implemented tests + # only used while porting to bats: remove afterward +} setup() { - echo 'setup' >&2 + test_debug && echo 'setup' >&2 NVM_DIR="${BATS_TMPDIR}" cd "${NVM_DIR}" rm -Rf src alias v* mkdir src alias + load "${NVM_SRC_DIR}/nvm.sh" } teardown() { - echo 'teardown' >&2 + test_debug && 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 -# -#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 -# -} - -@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 #