mirror of
https://github.com/nvm-sh/nvm.git
synced 2026-02-04 17:02:48 +08:00
Normalize `nvm_version` output when `nvm_ls` returns "system vX" so alias and .nvmrc resolutions treat system correctly. Add fast tests for system alias behavior in `nvm ls`, `nvm use`, and `nvm which`.
44 lines
1.0 KiB
Bash
Executable File
44 lines
1.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -ex
|
|
|
|
die () { echo "$@" ; cleanup ; exit 1; }
|
|
cleanup () {
|
|
rm -f .nvmrc
|
|
if [ -f .nvmrc.orig ]; then
|
|
mv .nvmrc.orig .nvmrc
|
|
fi
|
|
if [ -n "${SYSTEM_DIR-}" ]; then
|
|
rm -rf "${SYSTEM_DIR}"
|
|
fi
|
|
if [ -n "${ORIG_PATH-}" ]; then
|
|
PATH="${ORIG_PATH}"
|
|
fi
|
|
unset -f nvm_print_npm_version
|
|
}
|
|
|
|
\. ../../nvm.sh
|
|
|
|
if [ -f .nvmrc ]; then mv .nvmrc .nvmrc.orig; fi
|
|
printf 'system\n' > .nvmrc
|
|
ORIG_PATH="${PATH}"
|
|
SYSTEM_VERSION="v0.0.0"
|
|
SYSTEM_DIR="$(mktemp -d)"
|
|
cat > "${SYSTEM_DIR}/node" <<EOF
|
|
#!/bin/sh
|
|
command printf '%s\n' "${SYSTEM_VERSION}"
|
|
EOF
|
|
chmod +x "${SYSTEM_DIR}/node"
|
|
PATH="${SYSTEM_DIR}:${PATH}"
|
|
nvm_print_npm_version() { command printf ' (npm v1.2.3)'; }
|
|
|
|
NVMRC_PATH="${PWD}/.nvmrc"
|
|
EXPECTED_OUTPUT="Found '${NVMRC_PATH}' with version <system>
|
|
Now using system version of node: ${SYSTEM_VERSION}$(nvm_print_npm_version)"
|
|
set +ex # since stderr is needed
|
|
OUTPUT="$(nvm use 2>&1)"
|
|
set -ex
|
|
[ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "Could not use system via .nvmrc. Got >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<"
|
|
|
|
cleanup
|