diff --git a/nvm.sh b/nvm.sh index 574b8f3..5b93c8c 100644 --- a/nvm.sh +++ b/nvm.sh @@ -317,9 +317,9 @@ unset NVM_SCRIPT_SOURCE 2>/dev/null nvm_tree_contains_path() { local tree - tree="${1-}" + tree=$(realpath --canonicalize-missing "${1-}") local node_path - node_path="${2-}" + node_path=$(realpath --canonicalize-missing "${2-}") if [ "@${tree}@" = "@@" ] || [ "@${node_path}@" = "@@" ]; then nvm_err "both the tree and the node path are required" diff --git a/test/fast/Unit tests/nvm_die_on_prefix b/test/fast/Unit tests/nvm_die_on_prefix index f06a9bf..2b8dfab 100755 --- a/test/fast/Unit tests/nvm_die_on_prefix +++ b/test/fast/Unit tests/nvm_die_on_prefix @@ -186,4 +186,18 @@ Run \`foo\` to unset it." [ "_$EXIT_CODE" = "_10" ] || die "'nvm_die_on_prefix 0 foo' with user .npmrc that has globalconfig did not exit with 10; got '$EXIT_CODE'" ) +npm() { + local args + args="$@" + if [ "_$args" = "_config --loglevel=warn get prefix" ]; then + echo "/home/foo/.nvm/path/to/version" + fi +} +NON_NORMALIZED_NVM_DIR="//home//foo//.nvm/" +OUTPUT="$(export NVM_DIR="$NON_NORMALIZED_NVM_DIR" ; nvm_die_on_prefix 0 foo 2>&1)" +EXPECTED_OUTPUT='' +EXIT_CODE="$(export NVM_DIR="$NON_NORMALIZED_NVM_DIR" ; nvm_die_on_prefix 0 foo >/dev/null 2>&1; echo $?)" +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT' with non-normalized NVM_DIR; got '$OUTPUT'" +[ "_$EXIT_CODE" = "_0" ] || die "'nvm_die_on_prefix 0 foo' did not exit with 0 with non-normalized NVM_DIR; got '$EXIT_CODE'" + cleanup