diff --git a/nvm.sh b/nvm.sh index 1991ddc..609474d 100644 --- a/nvm.sh +++ b/nvm.sh @@ -53,6 +53,19 @@ if [ -z "$NVM_NODEJS_ORG_MIRROR" ]; then export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist" fi +nvm_tree_contains_path() { + local tree + tree="$1" + local path + path="$2" + local pathdir + pathdir=$(dirname "$path") + while [ "$pathdir" != "" ] && [ "$pathdir" != "." ] && [ "$pathdir" != "/" ] && [ "$pathdir" != "$tree" ]; do + pathdir=$(dirname "$pathdir") + done + [ "$pathdir" = "$tree" ] +} + # Traverse up in directory tree to find containing folder nvm_find_up() { local path diff --git a/test/fast/Unit tests/nvm_tree_contains_path b/test/fast/Unit tests/nvm_tree_contains_path new file mode 100755 index 0000000..0ddfb86 --- /dev/null +++ b/test/fast/Unit tests/nvm_tree_contains_path @@ -0,0 +1,27 @@ +#!/bin/sh + +cleanup () { + rm tmp/node + rmdir tmp + rm tmp2/node + rmdir tmp2 +} +die () { echo $@ ; cleanup; exit 1; } + +. ../../../nvm.sh + +mkdir -p tmp +touch -p tmp/node +mkdir -p tmp2 +touch -p tmp2/node + +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 +