mirror of
https://github.com/nvm-sh/nvm.git
synced 2026-09-19 00:00:09 +08:00
[Fix] nvm-exec: improve the no-version failure message
The message claimed "no .nvmrc file found" even when one was found and its version simply was not installed, and it never mentioned that `NODE_VERSION=default` selects the `default` alias. Refs #3810
This commit is contained in:
@@ -12,7 +12,9 @@ if [ -n "$NODE_VERSION" ]; then
|
|||||||
else
|
else
|
||||||
{ NVM_RC_VERSION="$(nvm_rc_version 3>&1 1>&4)"; } 4>&1 && nvm_ensure_version_installed "$NVM_RC_VERSION";
|
{ NVM_RC_VERSION="$(nvm_rc_version 3>&1 1>&4)"; } 4>&1 && nvm_ensure_version_installed "$NVM_RC_VERSION";
|
||||||
if ! nvm use >/dev/null 2>&1; then
|
if ! nvm use >/dev/null 2>&1; then
|
||||||
echo "No NODE_VERSION provided; no .nvmrc file found" >&2
|
nvm_err 'nvm-exec: unable to select a node version'
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
nvm_err ' Set `NODE_VERSION` (e.g. `NODE_VERSION=default`), or add an `.nvmrc` file.'
|
||||||
exit 127
|
exit 127
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,14 +1,28 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
|
export NVM_DIR="$(cd ../.. && pwd)"
|
||||||
|
|
||||||
|
# an ambient value would send nvm-exec down its `NODE_VERSION` branch
|
||||||
|
unset NODE_VERSION
|
||||||
|
|
||||||
: nvm.sh
|
: nvm.sh
|
||||||
\. ../../nvm.sh
|
\. ../../nvm.sh
|
||||||
|
|
||||||
cleanup() { rm -f .nvmrc; }
|
ORIG_PWD="$(pwd)"
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
cd "${ORIG_PWD}" 2>/dev/null || true
|
||||||
|
rm -f .nvmrc
|
||||||
|
[ -n "${TMP_DIR-}" ] && rm -rf "${TMP_DIR}"
|
||||||
|
}
|
||||||
die () { echo "$@" ; cleanup ; exit 1; }
|
die () { echo "$@" ; cleanup ; exit 1; }
|
||||||
|
|
||||||
NVM_TEST_VERSION=v0.42
|
NVM_TEST_VERSION=v0.42
|
||||||
|
|
||||||
|
HINT="nvm-exec: unable to select a node version
|
||||||
|
Set \`NODE_VERSION\` (e.g. \`NODE_VERSION=default\`), or add an \`.nvmrc\` file."
|
||||||
|
|
||||||
# Write it to nvmrc
|
# Write it to nvmrc
|
||||||
echo "$NVM_TEST_VERSION" > .nvmrc
|
echo "$NVM_TEST_VERSION" > .nvmrc
|
||||||
|
|
||||||
@@ -17,9 +31,26 @@ EXPECTED="Found '$(pwd)/.nvmrc' with version <${NVM_TEST_VERSION}>
|
|||||||
N/A: version \"${NVM_TEST_VERSION}\" is not yet installed.
|
N/A: version \"${NVM_TEST_VERSION}\" is not yet installed.
|
||||||
|
|
||||||
You need to run \`nvm install ${NVM_TEST_VERSION}\` to install and use it.
|
You need to run \`nvm install ${NVM_TEST_VERSION}\` to install and use it.
|
||||||
No NODE_VERSION provided; no .nvmrc file found";
|
${HINT}";
|
||||||
|
|
||||||
# Skip install, we want to test the error message
|
# Skip install, we want to test the error message
|
||||||
[ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<"
|
[ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<"
|
||||||
|
|
||||||
|
rm -f .nvmrc
|
||||||
|
|
||||||
|
NVM_EXEC="$(cd ../.. && pwd)/nvm-exec"
|
||||||
|
|
||||||
|
# Run from a fresh, empty directory so no ambient .nvmrc above the test dir
|
||||||
|
# can satisfy the lookup and mask the hint.
|
||||||
|
TMP_DIR="$(mktemp -d)"
|
||||||
|
cd "${TMP_DIR}" || die "could not cd to temp dir"
|
||||||
|
|
||||||
|
OUTPUT="$("${NVM_EXEC}" node </dev/null 2>&1)";
|
||||||
|
EXIT_CODE=$?
|
||||||
|
EXPECTED="No version provided and no .nvmrc file found
|
||||||
|
${HINT}";
|
||||||
|
|
||||||
|
[ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<"
|
||||||
|
[ "${EXIT_CODE}" = 127 ] || die "expected exit code 127, got >${EXIT_CODE}<"
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|||||||
Reference in New Issue
Block a user