[Fix] `nvm_die_on_prefix`: check that the prefix is inside the version dir, not just the nvm dir
- also pass the version dir as the third argument
parent
035bf9e28e
commit
1d88ecfce5
14
nvm.sh
14
nvm.sh
|
@ -2159,7 +2159,7 @@ nvm_npm_global_modules() {
|
||||||
|
|
||||||
nvm_die_on_prefix() {
|
nvm_die_on_prefix() {
|
||||||
local NVM_DELETE_PREFIX
|
local NVM_DELETE_PREFIX
|
||||||
NVM_DELETE_PREFIX="$1"
|
NVM_DELETE_PREFIX="${1-}"
|
||||||
case "${NVM_DELETE_PREFIX}" in
|
case "${NVM_DELETE_PREFIX}" in
|
||||||
0 | 1) ;;
|
0 | 1) ;;
|
||||||
*)
|
*)
|
||||||
|
@ -2168,9 +2168,11 @@ nvm_die_on_prefix() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
local NVM_COMMAND
|
local NVM_COMMAND
|
||||||
NVM_COMMAND="$2"
|
NVM_COMMAND="${2-}"
|
||||||
if [ -z "${NVM_COMMAND}" ]; then
|
local NVM_VERSION_DIR
|
||||||
nvm_err 'Second argument "nvm command" must be nonempty'
|
NVM_VERSION_DIR="${3-}"
|
||||||
|
if [ -z "${NVM_COMMAND}" ] || [ -z "${NVM_VERSION_DIR}" ]; then
|
||||||
|
nvm_err 'Second argument "nvm command", and third argument "nvm version dir", must both be nonempty'
|
||||||
return 2
|
return 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2210,7 +2212,7 @@ nvm_die_on_prefix() {
|
||||||
local NVM_OS
|
local NVM_OS
|
||||||
NVM_OS="$(nvm_get_os)"
|
NVM_OS="$(nvm_get_os)"
|
||||||
NVM_NPM_PREFIX="$(npm config --loglevel=warn get prefix)"
|
NVM_NPM_PREFIX="$(npm config --loglevel=warn get prefix)"
|
||||||
if ! (nvm_tree_contains_path "${NVM_DIR}" "${NVM_NPM_PREFIX}" >/dev/null 2>&1); then
|
if [ "${NVM_VERSION_DIR}" != "${NVM_NPM_PREFIX}" ] && ! (nvm_tree_contains_path "${NVM_VERSION_DIR}" "${NVM_NPM_PREFIX}" >/dev/null 2>&1); then
|
||||||
if [ "_${NVM_DELETE_PREFIX}" = "_1" ]; then
|
if [ "_${NVM_DELETE_PREFIX}" = "_1" ]; then
|
||||||
npm config --loglevel=warn delete prefix
|
npm config --loglevel=warn delete prefix
|
||||||
else
|
else
|
||||||
|
@ -3140,7 +3142,7 @@ nvm() {
|
||||||
if [ "${NVM_SILENT:-0}" -eq 1 ]; then
|
if [ "${NVM_SILENT:-0}" -eq 1 ]; then
|
||||||
NVM_USE_CMD="${NVM_USE_CMD} --silent"
|
NVM_USE_CMD="${NVM_USE_CMD} --silent"
|
||||||
fi
|
fi
|
||||||
if ! nvm_die_on_prefix "${NVM_DELETE_PREFIX}" "${NVM_USE_CMD}"; then
|
if ! nvm_die_on_prefix "${NVM_DELETE_PREFIX}" "${NVM_USE_CMD}" "${NVM_VERSION_DIR}"; then
|
||||||
return 11
|
return 11
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -22,13 +22,13 @@ EXIT_CODE="$(nvm_die_on_prefix 2 >/dev/null 2>&1; echo $?)"
|
||||||
[ "_$EXIT_CODE" = "_1" ] || die "'nvm_die_on_prefix' did not exit with 1; got "$EXIT_CODE""
|
[ "_$EXIT_CODE" = "_1" ] || die "'nvm_die_on_prefix' did not exit with 1; got "$EXIT_CODE""
|
||||||
|
|
||||||
OUTPUT="$(nvm_die_on_prefix 0 2>&1)"
|
OUTPUT="$(nvm_die_on_prefix 0 2>&1)"
|
||||||
EXPECTED_OUTPUT="Second argument \"nvm command\" must be nonempty"
|
EXPECTED_OUTPUT='Second argument "nvm command", and third argument "nvm version dir", must both be nonempty'
|
||||||
EXIT_CODE="$(nvm_die_on_prefix 0 >/dev/null 2>&1; echo $?)"
|
EXIT_CODE="$(nvm_die_on_prefix 0 >/dev/null 2>&1; echo $?)"
|
||||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_die_on_prefix 0' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_die_on_prefix 0' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
||||||
[ "_$EXIT_CODE" = "_2" ] || die "'nvm_die_on_prefix 0' did not exit with 2; got '$EXIT_CODE'"
|
[ "_$EXIT_CODE" = "_2" ] || die "'nvm_die_on_prefix 0' did not exit with 2; got '$EXIT_CODE'"
|
||||||
|
|
||||||
nvm_has() { return 1; } # ie, npm is not installed
|
nvm_has() { return 1; } # ie, npm is not installed
|
||||||
OUTPUT="$(nvm_die_on_prefix 0 foo 2>&1)"
|
OUTPUT="$(nvm_die_on_prefix 0 version_dir foo 2>&1)"
|
||||||
[ -z "$OUTPUT" ] || die "nvm_die_on_prefix was not a noop when nvm_has returns 1, got '$OUTPUT'"
|
[ -z "$OUTPUT" ] || die "nvm_die_on_prefix was not a noop when nvm_has returns 1, got '$OUTPUT'"
|
||||||
|
|
||||||
nvm_has() { return 0; }
|
nvm_has() { return 0; }
|
||||||
|
@ -40,27 +40,27 @@ npm() {
|
||||||
echo "$(nvm_version_dir new)/good prefix"
|
echo "$(nvm_version_dir new)/good prefix"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
OUTPUT="$(nvm_die_on_prefix 0 foo 2>&1)"
|
OUTPUT="$(nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" 2>&1)"
|
||||||
[ -z "$OUTPUT" ] || die "'nvm_die_on_prefix' was not a noop when prefix is good; got '$OUTPUT'"
|
[ -z "$OUTPUT" ] || die "'nvm_die_on_prefix' was not a noop when prefix is good; got '$OUTPUT'"
|
||||||
|
|
||||||
OUTPUT="$(PREFIX=bar nvm_die_on_prefix 0 foo 2>&1)"
|
OUTPUT="$(PREFIX=bar nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" 2>&1)"
|
||||||
EXPECTED_OUTPUT='nvm is not compatible with the "PREFIX" environment variable: currently set to "bar"
|
EXPECTED_OUTPUT='nvm is not compatible with the "PREFIX" environment variable: currently set to "bar"
|
||||||
Run `unset PREFIX` to unset it.'
|
Run `unset PREFIX` to unset it.'
|
||||||
EXIT_CODE="$(export PREFIX=bar ; nvm_die_on_prefix 0 foo >/dev/null 2>&1; echo $?)"
|
EXIT_CODE="$(export PREFIX=bar ; nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" >/dev/null 2>&1; echo $?)"
|
||||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'PREFIX=bar nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'PREFIX=bar nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
||||||
[ "_$EXIT_CODE" = "_3" ] || die "'PREFIX=bar nvm_die_on_prefix 0 foo' did not exit with 3; got '$EXIT_CODE'"
|
[ "_$EXIT_CODE" = "_3" ] || die "'PREFIX=bar nvm_die_on_prefix 0 foo' did not exit with 3; got '$EXIT_CODE'"
|
||||||
|
|
||||||
OUTPUT="$(export NPM_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo 2>&1)"
|
OUTPUT="$(export NPM_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" 2>&1)"
|
||||||
EXPECTED_OUTPUT='nvm is not compatible with the "NPM_CONFIG_PREFIX" environment variable: currently set to "bar"
|
EXPECTED_OUTPUT='nvm is not compatible with the "NPM_CONFIG_PREFIX" environment variable: currently set to "bar"
|
||||||
Run `unset NPM_CONFIG_PREFIX` to unset it.'
|
Run `unset NPM_CONFIG_PREFIX` to unset it.'
|
||||||
EXIT_CODE="$(export NPM_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo >/dev/null 2>&1; echo $?)"
|
EXIT_CODE="$(export NPM_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" >/dev/null 2>&1; echo $?)"
|
||||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'NPM_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'NPM_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
||||||
[ "_$EXIT_CODE" = "_4" ] || die "'NPM_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not exit with 4; got '$EXIT_CODE'"
|
[ "_$EXIT_CODE" = "_4" ] || die "'NPM_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not exit with 4; got '$EXIT_CODE'"
|
||||||
|
|
||||||
OUTPUT="$(export npm_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo 2>&1)"
|
OUTPUT="$(export npm_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" 2>&1)"
|
||||||
EXPECTED_OUTPUT='nvm is not compatible with the "npm_CONFIG_PREFIX" environment variable: currently set to "bar"
|
EXPECTED_OUTPUT='nvm is not compatible with the "npm_CONFIG_PREFIX" environment variable: currently set to "bar"
|
||||||
Run `unset npm_CONFIG_PREFIX` to unset it.'
|
Run `unset npm_CONFIG_PREFIX` to unset it.'
|
||||||
EXIT_CODE="$(export npm_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo >/dev/null 2>&1; echo $?)"
|
EXIT_CODE="$(export npm_CONFIG_PREFIX=bar ; nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" >/dev/null 2>&1; echo $?)"
|
||||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'npm_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'npm_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
||||||
[ "_$EXIT_CODE" = "_4" ] || die "'npm_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not exit with 4; got '$EXIT_CODE'"
|
[ "_$EXIT_CODE" = "_4" ] || die "'npm_CONFIG_PREFIX=bar nvm_die_on_prefix 0 foo' did not exit with 4; got '$EXIT_CODE'"
|
||||||
|
|
||||||
|
@ -71,10 +71,10 @@ npm() {
|
||||||
echo "./bad prefix"
|
echo "./bad prefix"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
OUTPUT="$(nvm_die_on_prefix 0 foo 2>&1)"
|
OUTPUT="$(nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" 2>&1)"
|
||||||
EXPECTED_OUTPUT="nvm is not compatible with the npm config \"prefix\" option: currently set to \"./bad prefix\"
|
EXPECTED_OUTPUT="nvm is not compatible with the npm config \"prefix\" option: currently set to \"./bad prefix\"
|
||||||
Run \`npm config delete prefix\` or \`foo\` to unset it."
|
Run \`npm config delete prefix\` or \`foo\` to unset it."
|
||||||
EXIT_CODE="$(nvm_die_on_prefix 0 foo >/dev/null 2>&1; echo $?)"
|
EXIT_CODE="$(nvm_die_on_prefix 0 foo "$(nvm_version_dir new)" >/dev/null 2>&1; echo $?)"
|
||||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT' with bad prefix set; got '$OUTPUT'"
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_die_on_prefix 0 foo' did not error with '$EXPECTED_OUTPUT' with bad prefix set; got '$OUTPUT'"
|
||||||
[ "_$EXIT_CODE" = "_10" ] || die "'nvm_die_on_prefix 0 foo' did not exit with 10 with bad prefix set; got '$EXIT_CODE'"
|
[ "_$EXIT_CODE" = "_10" ] || die "'nvm_die_on_prefix 0 foo' did not exit with 10 with bad prefix set; got '$EXIT_CODE'"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue