diff --git a/nvm.sh b/nvm.sh index 3170252..01213a3 100644 --- a/nvm.sh +++ b/nvm.sh @@ -3559,7 +3559,10 @@ nvm_install_default_packages() { nvm_supports_source_options() { # shellcheck disable=SC1091,SC2240 - [ "_$(nvm_echo '[ $# -gt 0 ] && nvm_echo $1' | . /dev/stdin yes 2>/dev/null)" = "_yes" ] + [ "_$( . /dev/stdin yes 2> /dev/null <<'EOF' +[ $# -gt 0 ] && nvm_echo $1 +EOF + )" = "_yes" ] } nvm_supports_xz() { diff --git a/test/fast/Unit tests/nvm_supports_source_options b/test/fast/Unit tests/nvm_supports_source_options new file mode 100755 index 0000000..ceeff91 --- /dev/null +++ b/test/fast/Unit tests/nvm_supports_source_options @@ -0,0 +1,27 @@ +#!/bin/sh + +die () { echo "$@" ; exit 1; } + +\. ../../../nvm.sh + +x=0 +i=0 +runs=5 +calls=500 +first_result=false +if (nvm_supports_source_options && printf .); then + first_result=true +fi +while [ $x -le $runs ]; do + y=$x + x=$(( x + 1 )) + while [ $i -le $calls ]; do + this_result=false + if (nvm_supports_source_options && printf .); then + this_result=true + fi + [ $this_result = $first_result ] || die "call ${i}, run ${y} got ${this_result}; expected ${first_result}" + i=$(( i + 1 )) + done +done +echo "${runs} runs of ${calls} calls succeeded"