Compare commits

..

15 Commits

Author SHA1 Message Date
ryenus
1f277a34bf Merge 3e15282773 into ccf6d16017 2024-11-04 15:08:35 +00:00
ryenus
3e15282773 set NVM_NO_COLORS to --no-colors to disable color 2024-10-18 23:13:10 +08:00
ryenus
060adbd05e rename min_ver to min for consistency 2024-10-18 23:13:10 +08:00
ryenus
08f28abbdd [test] avoid leaking temp variable 2024-10-18 23:13:10 +08:00
ryenus
1f3af439c3 ls-remote: introduce temp var for env inheritance
This is to inherit $NVM_MIN from env when defined, meanwhile avoiding
inline local variable initialization for ksh compatibility.

Co-authored-by: Jordan Harband <ljharb@gmail.com>
2024-10-18 23:13:10 +08:00
ryenus
686d33b066 avoid inline initialization for ksh compatibility
Co-authored-by: Jordan Harband <ljharb@gmail.com>
2024-10-18 23:13:10 +08:00
ryenus
e77828a448 ls-remote: add CLI option --min=<version>
When omitted, fallback to the environment variable "NVM_MIN" if set.
And the CLI option --min=<version> takes precedence over the environment
variable "NVM_MIN" if both are present.
2024-10-18 23:13:10 +08:00
ryenus
2749487689 always show updates for installed versions
even if they're older than $NVM_MIN
2024-10-18 23:13:05 +08:00
ryenus
cb267d6302 remove function ref duplication 2024-10-08 20:20:10 +08:00
ryenus
646e3bb869 prefixed versions like v18 also work 2024-10-08 20:20:10 +08:00
ryenus
a2996f3b0e rename NVM_MIN_VER to NVM_MIN
since nvm is all about versions, so no need for the explicit suffix.
2024-10-08 20:20:10 +08:00
ryenus
4c67ced319 trim leading space in mock output due to eclint errors 2024-10-08 20:20:10 +08:00
ryenus
f4c2477a0b add test for NVM_MIN_VER support
show only versions newer than NVM_MIN_VER if set
2024-10-08 20:20:10 +08:00
ryenus
5b57613aac always list installed versions 2024-10-08 20:20:10 +08:00
ryenus
be4f15d833 show only versions newer than NVM_MIN_VER if set 2024-10-08 20:20:10 +08:00
9 changed files with 207 additions and 103 deletions

View File

@@ -37,11 +37,6 @@ jobs:
matrix:
node-version: ${{ fromJson(needs.matrix.outputs.latest) }}
include:
- node-version: "21"
- node-version: "20.5"
- node-version: "20.4"
- node-version: "14.17"
- node-version: "14.16"
- node-version: "9.2"
- node-version: "9.1"
- node-version: "9.0"

View File

@@ -1,6 +1,6 @@
name: urchin tests
on: [push, pull_request]
on: [push]
permissions:
contents: read

View File

@@ -20,7 +20,6 @@ jobs:
allowed-endpoints:
github.com:443
registry.npmjs.org:443
api.github.com:443
- uses: actions/checkout@v4
with:
# https://github.com/actions/checkout/issues/217#issue-599945005
@@ -31,7 +30,7 @@ jobs:
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
node-version: '16'
- run: npm install
- run: npm run doctoc
- name: commit changes

View File

@@ -113,11 +113,3 @@ Co-authored-by: Name Here <email@here>
# Where can I ask for help?
If you have any questions, please contact [@LJHarb](mailto:ljharb@gmail.com).
# Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
- The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
- The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
- The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
- I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.

View File

@@ -296,17 +296,17 @@ nvm_detect_profile() {
DETECTED_PROFILE="$HOME/.bash_profile"
fi
elif [ "${SHELL#*zsh}" != "$SHELL" ]; then
if [ -f "${ZDOTDIR:-${HOME}}/.zshrc" ]; then
DETECTED_PROFILE="${ZDOTDIR:-${HOME}}/.zshrc"
elif [ -f "${ZDOTDIR:-${HOME}}/.zprofile" ]; then
DETECTED_PROFILE="${ZDOTDIR:-${HOME}}/.zprofile"
if [ -f "$HOME/.zshrc" ]; then
DETECTED_PROFILE="$HOME/.zshrc"
elif [ -f "$HOME/.zprofile" ]; then
DETECTED_PROFILE="$HOME/.zprofile"
fi
fi
if [ -z "$DETECTED_PROFILE" ]; then
for EACH_PROFILE in ".profile" ".bashrc" ".bash_profile" ".zprofile" ".zshrc"
do
if DETECTED_PROFILE="$(nvm_try_profile "${ZDOTDIR:-${HOME}}/${EACH_PROFILE}")"; then
if DETECTED_PROFILE="$(nvm_try_profile "${HOME}/${EACH_PROFILE}")"; then
break
fi
done

61
nvm.sh
View File

@@ -354,21 +354,6 @@ nvm_install_latest_npm() {
if [ $NVM_IS_19_OR_ABOVE -eq 1 ] && nvm_version_greater_than_or_equal_to "${NODE_VERSION}" 20.5.0; then
NVM_IS_20_5_OR_ABOVE=1
fi
local NVM_IS_20_17_or_ABOVE
NVM_IS_20_17_or_ABOVE=0
if [ $NVM_IS_20_5_OR_ABOVE -eq 1 ] && nvm_version_greater 20.17.0 "${NODE_VERSION}"; then
NVM_IS_20_17_or_ABOVE=1
fi
local NVM_IS_21_OR_ABOVE
NVM_IS_21_OR_ABOVE=0
if [ $NVM_IS_20_17_or_ABOVE -eq 1 ] && nvm_version_greater 21.0.0 "${NODE_VERSION}"; then
NVM_IS_21_OR_ABOVE=1
fi
local NVM_IS_22_9_OR_ABOVE
NVM_IS_22_9_OR_ABOVE=0
if [ $NVM_IS_21_OR_ABOVE -eq 1 ] && nvm_version_greater 22.9.0 "${NODE_VERSION}"; then
NVM_IS_22_9_OR_ABOVE=1
fi
if [ $NVM_IS_4_4_OR_BELOW -eq 1 ] || {
[ $NVM_IS_5_OR_ABOVE -eq 1 ] && nvm_version_greater 5.10.0 "${NODE_VERSION}"; \
@@ -414,15 +399,8 @@ nvm_install_latest_npm() {
[ $NVM_IS_18_17_OR_ABOVE -eq 0 ] \
|| { [ $NVM_IS_19_OR_ABOVE -eq 1 ] && [ $NVM_IS_20_5_OR_ABOVE -eq 0 ]; } \
; then
# TODO: 10.8.3 can run on 16.20.2?? https://github.com/nodejs/Release/issues/884#issuecomment-2558077691
nvm_echo '* `npm` `v9.x` is the last version that works on `node` `< v18.17`, `v19`, or `v20.0` - `v20.4`'
$NVM_NPM_CMD install -g npm@9
elif \
[ $NVM_IS_20_17_or_ABOVE -eq 0 ] \
|| { [ $NVM_IS_21_OR_ABOVE -eq 1 ] && [ $NVM_IS_22_9_OR_ABOVE -eq 0 ]; } \
; then
nvm_echo '* `npm` `v10.x` is the last version that works on `node` `< v20.17`, `v21`, or `v22.0` - `v22.8`'
$NVM_NPM_CMD install -g npm@10
else
nvm_echo '* Installing latest `npm`; if this does not work on your node version, please report a bug!'
$NVM_NPM_CMD install -g npm
@@ -444,7 +422,8 @@ fi
if [ -z "${NVM_DIR-}" ]; then
# shellcheck disable=SC2128
if [ -n "${BASH_SOURCE-}" ]; then
NVM_SCRIPT_SOURCE="${BASH_SOURCE}"
# shellcheck disable=SC2169,SC3054
NVM_SCRIPT_SOURCE="${BASH_SOURCE[0]}"
fi
# shellcheck disable=SC2086
NVM_DIR="$(nvm_cd ${NVM_CD_FLAGS} "$(dirname "${NVM_SCRIPT_SOURCE:-$0}")" >/dev/null && \pwd)"
@@ -1878,12 +1857,15 @@ nvm_print_versions() {
fi
command awk \
-v remote_versions="$(printf '%s' "${1-}" | tr '\n' '|')" \
-v remote_versions="$(printf '%s' "${1-}" | tr '\n' '|')" -v min="${NVM_MIN:-v0}" \
-v installed_versions="$(nvm_ls | tr '\n' '|')" -v current="$NVM_CURRENT" \
-v installed_color="$INSTALLED_COLOR" -v system_color="$SYSTEM_COLOR" \
-v current_color="$CURRENT_COLOR" -v default_color="$DEFAULT_COLOR" \
-v old_lts_color="$DEFAULT_COLOR" -v has_colors="$NVM_HAS_COLORS" '
function alen(arr, i, len) { len=0; for(i in arr) len++; return len; }
function v2a(v, a) { sub(/^(iojs-)?v/, "", v); split(v, a, "."); }
function v2m(v, a) { sub(/^(iojs-)?v/, "", v); split(v, a, "."); return a[1]; }
function vcmp(v1,v2,a1,a2,i,d) { v2a(v1,a1); v2a(v2,a2); for(i=1;i<4;i++) { d = a1[i] - a2[i]; if(d!=0) return d; } return 0; }
BEGIN {
fmt_installed = has_colors ? (installed_color ? "\033[" installed_color "%15s\033[0m" : "%15s") : "%15s *";
fmt_system = has_colors ? (system_color ? "\033[" system_color "%15s\033[0m" : "%15s") : "%15s *";
@@ -1898,13 +1880,13 @@ BEGIN {
split(remote_versions, lines, "|");
split(installed_versions, installed, "|");
rows = alen(lines);
for (n = 1; n <= rows; n++) {
filter_on = (vcmp("v0.0.0", min) != 0);
current_major = -1;
for (m = n = 1; n <= rows; n++) {
split(lines[n], fields, "[[:blank:]]+");
cols = alen(fields);
version = fields[1];
is_installed = 0;
for (i in installed) {
if (version == installed[i]) {
is_installed = 1;
@@ -1912,6 +1894,16 @@ BEGIN {
}
}
if (filter_on != 0) {
if (is_installed) {
current_major = v2m(version);
} else if (vcmp(version, min) >= 0) {
filter_on = 0;
} else if (v2m(version) != current_major) {
continue;
}
}
fmt_version = "%15s";
if (version == current) {
fmt_version = fmt_current;
@@ -1921,8 +1913,7 @@ BEGIN {
fmt_version = fmt_installed;
}
padding = (!has_colors && is_installed) ? "" : " ";
padding = (is_installed && !has_colors) ? "" : " ";
if (cols == 1) {
formatted = sprintf(fmt_version, version);
} else if (cols == 2) {
@@ -1931,10 +1922,10 @@ BEGIN {
formatted = sprintf((fmt_version padding fmt_latest_lts), version, fields[2]);
}
output[n] = formatted;
output[m++] = formatted;
}
for (n = 1; n <= rows; n++) {
for (n = 1; n < m; n++) {
print output[n]
}
@@ -3101,6 +3092,7 @@ nvm() {
nvm_echo ' nvm ls-remote [<version>] List remote versions available for install, matching a given <version> if provided'
nvm_echo ' --lts When listing, only show LTS (long-term support) versions'
nvm_echo ' --lts=<LTS name> When listing, only show versions for a specific LTS line'
nvm_echo ' --min=<version> When listing, only show versions greater than or equal to <version>, including minor/patch updates for installed versions'
nvm_echo ' --no-colors Suppress colored output'
nvm_echo ' nvm version <version> Resolve the given description to a single local version'
nvm_echo ' nvm version-remote <version> Resolve the given description to a single remote version'
@@ -4119,6 +4111,10 @@ nvm() {
local NVM_LTS
local PATTERN
local NVM_NO_COLORS
local NVM_MIN_ENV
NVM_MIN_ENV="${NVM_MIN-}"
local NVM_MIN
NVM_MIN="${NVM_MIN_ENV-}"
while [ $# -gt 0 ]; do
case "${1-}" in
@@ -4129,6 +4125,9 @@ nvm() {
--lts=*)
NVM_LTS="${1##--lts=}"
;;
--min=*)
NVM_MIN="${1##--min=}"
;;
--no-colors) NVM_NO_COLORS="${1}" ;;
--*)
nvm_err "Unsupported option \"${1}\"."

View File

@@ -0,0 +1,146 @@
#!/bin/sh
# shellcheck disable=SC2317
die () { echo "$@" ; cleanup ; exit 1; }
cleanup() {
unset -f nvm_remote_versions nvm_ls nvm_ls_current
if [ -n "$TEMP_NVM_MIN" ]; then
export NVM_MIN="$TEMP_NVM_MIN"
unset TEMP_NVM_MIN
fi
}
\. ../../../nvm.sh
if [ -n "$NVM_MIN" ]; then
TEMP_NVM_MIN="$NVM_MIN"
unset NVM_MIN
fi
# mock currently installed versions
nvm_ls() {
echo "v16.20.2
v18.20.3
system"
}
# mock currently active version
nvm_ls_current() {
echo "v18.20.3"
}
nvm_remote_versions() {
echo "v16.0.0
v16.20.2 Gallium
v16.20.3 Gallium *
v17.0.0
v17.9.1
v18.0.0
v18.1.0
v18.20.2 Hydrogen
v18.20.3 Hydrogen *
v19.0.0
v19.9.0
v20.0.0
v20.8.1
v20.9.0 Iron *
v21.0.0
v21.1.0"
}
# nvm_print_versions should print all versions from nvm_remote_versions
OUTPUT="$(NVM_NO_COLORS='--no-colors' nvm_print_versions "$(nvm_remote_versions)" | sed -r 's/^[ \t]+//')"
EXPECTED_OUTPUT="v16.0.0
v16.20.2 * (LTS: Gallium)
v16.20.3 (Latest LTS: Gallium)
v17.0.0
v17.9.1
v18.0.0
v18.1.0
v18.20.2 (LTS: Hydrogen)
-> v18.20.3 * (Latest LTS: Hydrogen)
v19.0.0
v19.9.0
v20.0.0
v20.8.1
v20.9.0 (Latest LTS: Iron)
v21.0.0
v21.1.0"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "(1) nvm_print_versions did not output all expected versions; got $OUTPUT"
# versions lower than 18 should be filtered out, but v16.20.2 should be kept since it's installed
OUTPUT="$(NVM_NO_COLORS='--no-colors' NVM_MIN=v18 nvm_print_versions "$(nvm_remote_versions)" | sed -r 's/^[ \t]+//')"
EXPECTED_OUTPUT="v16.20.2 * (LTS: Gallium)
v16.20.3 (Latest LTS: Gallium)
v18.0.0
v18.1.0
v18.20.2 (LTS: Hydrogen)
-> v18.20.3 * (Latest LTS: Hydrogen)
v19.0.0
v19.9.0
v20.0.0
v20.8.1
v20.9.0 (Latest LTS: Iron)
v21.0.0
v21.1.0"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "(2) NVM_MIN=18 nvm_print_versions did not output all expected versions; got $OUTPUT"
# versions lower than 19 should be filtered out
OUTPUT="$(NVM_NO_COLORS='--no-colors' NVM_MIN=19 nvm_print_versions "$(nvm_remote_versions)" | sed -r 's/^[ \t]+//')"
EXPECTED_OUTPUT="v16.20.2 * (LTS: Gallium)
v16.20.3 (Latest LTS: Gallium)
-> v18.20.3 * (Latest LTS: Hydrogen)
v19.0.0
v19.9.0
v20.0.0
v20.8.1
v20.9.0 (Latest LTS: Iron)
v21.0.0
v21.1.0"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "(3) NVM_MIN=19 nvm_print_versions did not output all expected versions; got $OUTPUT"
# versions lower than 20.1 should be filtered out, so v20.0.0 is out
OUTPUT="$(NVM_NO_COLORS='--no-colors' NVM_MIN=v20.1 nvm_print_versions "$(nvm_remote_versions)" | sed -r 's/^[ \t]+//')"
EXPECTED_OUTPUT="v16.20.2 * (LTS: Gallium)
v16.20.3 (Latest LTS: Gallium)
-> v18.20.3 * (Latest LTS: Hydrogen)
v20.8.1
v20.9.0 (Latest LTS: Iron)
v21.0.0
v21.1.0"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "(4) NVM_MIN=20.1 nvm_print_versions did not output all expected versions; got $OUTPUT"
# assume v18.20.3 is NOT installed, so now it should be filtered out
nvm_ls() {
echo "v16.20.2
system"
}
nvm_ls_current() {
echo "v16.20.2"
}
OUTPUT="$(NVM_NO_COLORS='--no-colors' NVM_MIN=20.1 nvm_print_versions "$(nvm_remote_versions)" | sed -r 's/^[ \t]+//')"
EXPECTED_OUTPUT="-> v16.20.2 * (LTS: Gallium)
v16.20.3 (Latest LTS: Gallium)
v20.8.1
v20.9.0 (Latest LTS: Iron)
v21.0.0
v21.1.0"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "(5) NVM_MIN=20.1 nvm_print_versions did not output all expected versions; got $OUTPUT"
cleanup

View File

@@ -3,16 +3,12 @@
setup () {
HOME="."
NVM_ENV=testing \. ../../install.sh
ZDOTDIR="$HOME/zdotdir"
mkdir -p zdotdir
touch ".bashrc"
touch ".bash_profile"
touch ".zprofile"
touch ".zshrc"
touch ".profile"
touch "test_profile"
touch "zdotdir/.zshrc"
touch "zdotdir/.zprofile"
}
cleanup () {
@@ -21,9 +17,7 @@ cleanup () {
unset NVM_DETECT_PROFILE
unset SHELL
unset -f setup cleanup die
unset ZDOTDIR
rm -f ".bashrc" ".bash_profile" ".zprofile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
rm -rf zdotdir 2>&1
}
die () { echo "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; }
@@ -35,54 +29,49 @@ setup
#
# setting $PROFILE to /dev/null should return no detected profile
NVM_DETECT_PROFILE="$(PROFILE='/dev/null' nvm_detect_profile)"
NVM_DETECT_PROFILE="$(PROFILE='/dev/null'; nvm_detect_profile)"
if [ -n "$NVM_DETECT_PROFILE" ]; then
die "nvm_detect_profile still detected a profile even though PROFILE=/dev/null"
fi
# .bashrc should be detected for bash
NVM_DETECT_PROFILE="$(SHELL="/bin/bash" PROFILE= nvm_detect_profile)"
NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; unset PROFILE; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
fi
# $PROFILE should override .bashrc profile detection
NVM_DETECT_PROFILE="$(SHELL="/bin/bash" PROFILE="test_profile" nvm_detect_profile)"
NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; PROFILE="test_profile"; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
die "nvm_detect_profile ignored \$PROFILE"
fi
# zdotdir/.zshrc should be detected for zsh
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh" PROFILE= nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then
die "nvm_detect_profile didn't pick \$ZDOTDIR/.zshrc for zsh"
fi
# .zshrc should be detected for zsh
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh" PROFILE= ZDOTDIR= nvm_detect_profile)"
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh"; unset PROFILE; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
fi
# $PROFILE should override .zshrc profile detection
NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh" PROFILE="test_profile" nvm_detect_profile)"
NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh"; PROFILE="test_profile"; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
die "nvm_detect_profile ignored \$PROFILE"
fi
#
# Confirm $PROFILE is only returned when it points to a valid file
#
# $PROFILE is a valid file
NVM_DETECT_PROFILE="$(PROFILE="test_profile" SHELL= nvm_detect_profile)"
NVM_DETECT_PROFILE="$(PROFILE="test_profile"; unset SHELL; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
fi
# $PROFILE is not a valid file
rm "test_profile"
NVM_DETECT_PROFILE="$(PROFILE="test_profile" nvm_detect_profile)"
NVM_DETECT_PROFILE="$(PROFILE="test_profile"; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" = "test_profile" ]; then
die "nvm_detect_profile picked \$PROFILE when it was an invalid file"
fi
@@ -94,58 +83,44 @@ fi
#
# It should favor .profile if file exists
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
die "nvm_detect_profile should have selected .profile; got $NVM_DETECT_PROFILE"
die "nvm_detect_profile should have selected .profile"
fi
# Otherwise, it should favor .bashrc if file exists
rm ".profile"
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
die "nvm_detect_profile should have selected .bashrc; got $NVM_DETECT_PROFILE"
die "nvm_detect_profile should have selected .bashrc"
fi
# Otherwise, it should favor .bash_profile if file exists
rm ".bashrc"
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
die "nvm_detect_profile should have selected .bash_profile; got $NVM_DETECT_PROFILE"
fi
# Otherwise, it should favor zdotdir/.zprofile if file exists
rm ".bash_profile"
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zprofile" ]; then
die "nvm_detect_profile should have selected zdotdir/.zprofile; got $NVM_DETECT_PROFILE"
die "nvm_detect_profile should have selected .bash_profile"
fi
# Otherwise, it should favor .zprofile if file exists
rm "zdotdir/.zprofile"
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
rm ".bash_profile"
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zprofile" ]; then
die "nvm_detect_profile should have selected .zprofile; got $NVM_DETECT_PROFILE"
fi
# Otherwise, it should favor zdotdir/.zshrc if file exists
rm ".zprofile"
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then
die "nvm_detect_profile should have selected zdotdir/.zshrc; got $NVM_DETECT_PROFILE"
die "nvm_detect_profile should have selected .zprofile"
fi
# Otherwise, it should favor .zshrc if file exists
rm "zdotdir/.zshrc"
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
rm ".zprofile"
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
die "nvm_detect_profile should have selected .zshrc; got $NVM_DETECT_PROFILE"
die "nvm_detect_profile should have selected .zshrc"
fi
# It should be empty if none is found
rm ".zshrc"
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
if [ ! -z "$NVM_DETECT_PROFILE" ]; then
die "nvm_detect_profile should have returned an empty value; got $NVM_DETECT_PROFILE"
die "nvm_detect_profile should have returned an empty value"
fi
cleanup

View File

@@ -6,7 +6,7 @@ die () { echo "$@" ; exit 1; }
\. ../../../nvm.sh
# Version to install/uninstall
NVM_TEST_VERSION=15.5.0
NVM_TEST_VERSION=5.10.1
# Make sure it's not already here
[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION
@@ -19,9 +19,7 @@ nvm ls | grep "$NVM_TEST_VERSION" || die "Failed to install node"
# Install global module as root
npm_path=$(which npm)
nvm_err "${PATH}"
PATH="${PATH}" sudo -n echo "${PATH}" || die 'sudo echo failed'
PATH="${PATH}" sudo -n "$npm_path" install jspm@'<2' -g || die 'either sudo failed, or `npm install jspm -g` failed`'
sudo -n "$npm_path" install jspm@'<2' -g || die 'either sudo failed, or `npm install jspm -g` failed`'
# Switch to another version so we can uninstall
nvm use 0.12.7