Skip to content

Commit 74bb42e

Browse files
committed
[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
1 parent cd84623 commit 74bb42e

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

‎nvm-exec‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ if [ -n "$NODE_VERSION" ]; then
1212
else
1313
{ NVM_RC_VERSION="$(nvm_rc_version 3>&1 1>&4)"; } 4>&1 && nvm_ensure_version_installed "$NVM_RC_VERSION";
1414
if ! nvm use >/dev/null 2>&1; then
15-
echo "No NODE_VERSION provided; no .nvmrc file found" >&2
15+
nvm_err 'nvm-exec: unable to select a node version'
16+
# shellcheck disable=SC2016
17+
nvm_err ' Set `NODE_VERSION` (e.g. `NODE_VERSION=default`), or add an `.nvmrc` file.'
1618
exit 127
1719
fi
1820
fi
Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,28 @@
11
#!/bin/bash
22

33
set -x
4+
export NVM_DIR="$(cd ../.. && pwd)"
5+
6+
# an ambient value would send nvm-exec down its `NODE_VERSION` branch
7+
unset NODE_VERSION
8+
49
: nvm.sh
510
\. ../../nvm.sh
611

7-
cleanup() { rm -f .nvmrc; }
12+
ORIG_PWD="$(pwd)"
13+
14+
cleanup() {
15+
cd "${ORIG_PWD}" 2>/dev/null || true
16+
rm -f .nvmrc
17+
[ -n "${TMP_DIR-}" ] && rm -rf "${TMP_DIR}"
18+
}
819
die () { echo "$@" ; cleanup ; exit 1; }
920

1021
NVM_TEST_VERSION=v0.42
1122

23+
HINT="nvm-exec: unable to select a node version
24+
Set \`NODE_VERSION\` (e.g. \`NODE_VERSION=default\`), or add an \`.nvmrc\` file."
25+
1226
# Write it to nvmrc
1327
echo "$NVM_TEST_VERSION" > .nvmrc
1428

@@ -17,9 +31,26 @@ EXPECTED="Found '$(pwd)/.nvmrc' with version <${NVM_TEST_VERSION}>
1731
N/A: version \"${NVM_TEST_VERSION}\" is not yet installed.
1832
1933
You need to run \`nvm install ${NVM_TEST_VERSION}\` to install and use it.
20-
No NODE_VERSION provided; no .nvmrc file found";
34+
${HINT}";
2135

2236
# Skip install, we want to test the error message
2337
[ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<"
2438

39+
rm -f .nvmrc
40+
41+
NVM_EXEC="$(cd ../.. && pwd)/nvm-exec"
42+
43+
# Run from a fresh, empty directory so no ambient .nvmrc above the test dir
44+
# can satisfy the lookup and mask the hint.
45+
TMP_DIR="$(mktemp -d)"
46+
cd "${TMP_DIR}" || die "could not cd to temp dir"
47+
48+
OUTPUT="$("${NVM_EXEC}" node </dev/null 2>&1)";
49+
EXIT_CODE=$?
50+
EXPECTED="No version provided and no .nvmrc file found
51+
${HINT}";
52+
53+
[ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<"
54+
[ "${EXIT_CODE}" = 127 ] || die "expected exit code 127, got >${EXIT_CODE}<"
55+
2556
cleanup

0 commit comments

Comments
 (0)