Browse Source
Add stable & unstable aliases. Fixes #336. With these changes, the following `nvm` commands will now support "stable" and "unstable" default/implicit aliases: - `ls`/`list` - `use` - `alias` - `run` - `exec` - `uninstall` - `copy-packages` For these, "stable" will be the latest even minor version that's locally installed; "unstable" will be the latest odd minor version that's locally installed. In addition, `nvm ls-remote` and `nvm install` will accept the same implicit aliases, however, these will actually call nodejs.org and output the latest even and odd minor versions available for installation. `nvm alias stable foo` and `nvm alias unstable foo` will *override* the default/implicit aliases. `nvm alias` output will reflect this by showing "(default)" when the alias is not user-defined.master
Jordan Harband
11 years ago
10 changed files with 248 additions and 2 deletions
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh |
||||
|
||||
. ../../../nvm.sh |
||||
|
||||
die () { echo $@ ; exit 1; } |
||||
|
||||
NVM_ALIAS_OUTPUT=$(nvm alias) |
||||
|
||||
EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" |
||||
STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" |
||||
echo "$NVM_ALIAS_OUTPUT" | \grep -e "^stable -> $EXPECTED_STABLE (-> $STABLE_VERSION) (default)$" \ |
||||
|| die "nvm alias did not contain the default local stable node version" |
||||
|
||||
EXPECTED_UNSTABLE="$(nvm_print_implicit_alias local unstable)" |
||||
UNSTABLE_VERSION="$(nvm_version "$EXPECTED_UNSTABLE")" |
||||
echo "$NVM_ALIAS_OUTPUT" | \grep -e "^unstable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION) (default)$" \ |
||||
|| die "nvm alias did not contain the default local unstable node version" |
||||
|
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh |
||||
|
||||
. ../../../nvm.sh |
||||
|
||||
die () { echo $@ ; cleanup ; exit 1; } |
||||
cleanup () { |
||||
rm -rf ../../../v0.8.1 |
||||
rm -rf ../../../v0.9.1 |
||||
} |
||||
|
||||
mkdir ../../../v0.8.1 |
||||
mkdir ../../../v0.9.1 |
||||
|
||||
EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" |
||||
STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" |
||||
|
||||
EXPECTED_UNSTABLE="$(nvm_print_implicit_alias local unstable)" |
||||
UNSTABLE_VERSION="$(nvm_version "$EXPECTED_UNSTABLE")" |
||||
|
||||
[ "_$STABLE_VERSION" != "_$UNSTABLE_VERSION" ] \ |
||||
|| die "stable and unstable versions are the same!" |
||||
|
||||
nvm alias stable "$EXPECTED_UNSTABLE" |
||||
nvm alias unstable "$EXPECTED_STABLE" |
||||
|
||||
NVM_ALIAS_OUTPUT=$(nvm alias) |
||||
|
||||
echo "$NVM_ALIAS_OUTPUT" | \grep -e "^stable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION)$" \ |
||||
|| die "nvm alias did not contain the overridden 'stable' alias" |
||||
|
||||
echo "$NVM_ALIAS_OUTPUT" | \grep -e "^unstable -> $EXPECTED_STABLE (-> $STABLE_VERSION)$" \ |
||||
|| die "nvm alias did not contain the overridden 'unstable' alias" |
||||
|
||||
cleanup |
||||
|
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh |
||||
|
||||
. ../../../nvm.sh |
||||
|
||||
die () { echo $@ ; exit 1; } |
||||
|
||||
EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" |
||||
STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" |
||||
|
||||
EXPECTED_UNSTABLE="$(nvm_print_implicit_alias local unstable)" |
||||
UNSTABLE_VERSION="$(nvm_version "$EXPECTED_UNSTABLE")" |
||||
|
||||
nvm ls stable | \grep "$STABLE_VERSION" >/dev/null \ |
||||
|| die "expected 'nvm ls stable' to give $STABLE_VERSION, got $(nvm ls stable)" |
||||
|
||||
nvm ls unstable | \grep "$UNSTABLE_VERSION" >/dev/null \ |
||||
|| die "expected 'nvm ls unstable' to give $UNSTABLE_VERSION, got $(nvm ls unstable)" |
||||
|
||||
mkdir ../../../v0.1.2 |
||||
nvm alias stable 0.1 |
||||
|
||||
nvm ls stable | \grep v0.1.2 >/dev/null \ |
||||
&& nvm ls stable | \grep -v "$STABLE_VERSION" >/dev/null \ |
||||
|| die "'nvm ls stable' did not contain an explicit 'stable' alias" |
||||
|
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh |
||||
|
||||
die () { echo $@ ; exit 1; } |
||||
|
||||
. ../../../nvm.sh |
||||
|
||||
EXPECTED_FIRST_MSG="nvm_print_implicit_alias must be specified with local or remote as the first argument." |
||||
[ "_$(nvm_print_implicit_alias 2>&1)" = "_$EXPECTED_FIRST_MSG" ] \ |
||||
|| die "nvm_print_implicit_alias did not require local|remote as first argument" |
||||
[ "_$(nvm_print_implicit_alias foo 2>&1)" = "_$EXPECTED_FIRST_MSG" ] \ |
||||
|| die "nvm_print_implicit_alias did not require local|remote as first argument" |
||||
|
||||
FIRST_EXIT_CODE="$(nvm_print_implicit_alias > /dev/null 2>&1 ; echo $?)" |
||||
[ "_$FIRST_EXIT_CODE" = "_1" ] \ |
||||
|| die "nvm_print_implicit_alias without local|remote had wrong exit code: expected 1, got $FIRST_EXIT_CODE" |
||||
|
||||
EXPECTED_SECOND_MSG="Only implicit aliases 'stable' and 'unstable' are supported." |
||||
[ "_$(nvm_print_implicit_alias local 2>&1)" = "_$EXPECTED_SECOND_MSG" ] \ |
||||
|| die "nvm_print_implicit_alias did not require stable|unstable as second argument" |
||||
[ "_$(nvm_print_implicit_alias local foo 2>&1)" = "_$EXPECTED_SECOND_MSG" ] \ |
||||
|| die "nvm_print_implicit_alias did not require stable|unstable as second argument" |
||||
|
||||
SECOND_EXIT_CODE="$(nvm_print_implicit_alias local > /dev/null 2>&1 ; echo $?)" |
||||
[ "_$SECOND_EXIT_CODE" = "_2" ] \ |
||||
|| die "nvm_print_implicit_alias without stable|unstable had wrong exit code: expected 2, got $SECOND_EXIT_CODE" |
||||
|
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh |
||||
|
||||
die () { echo $@ ; cleanup ; exit 1; } |
||||
cleanup() { |
||||
rm -rf ../../../v0.2.3 |
||||
rm -rf ../../../v0.3.4 |
||||
rm -rf ../../../v0.4.6 |
||||
rm -rf ../../../v0.5.7 |
||||
rm -rf ../../../v0.7.7 |
||||
unset -f nvm_ls_remote |
||||
} |
||||
|
||||
. ../../../nvm.sh |
||||
|
||||
mkdir ../../../v0.2.3 |
||||
mkdir ../../../v0.3.4 |
||||
mkdir ../../../v0.4.6 |
||||
mkdir ../../../v0.5.7 |
||||
mkdir ../../../v0.7.7 |
||||
|
||||
LATEST_STABLE="$(nvm_print_implicit_alias local stable)" |
||||
[ "_$LATEST_STABLE" = "_0.4" ] || die "local stable is not latest even minor: expected 0.4, got $LATEST_STABLE" |
||||
|
||||
LATEST_UNSTABLE="$(nvm_print_implicit_alias local unstable)" |
||||
[ "_$LATEST_UNSTABLE" = "_0.7" ] || die "local unstable is not latest odd minor: expected 0.7, got $LATEST_UNSTABLE" |
||||
|
||||
nvm_ls_remote() { |
||||
echo "v0.4.3" |
||||
echo "v0.5.4" |
||||
echo "v0.6.6" |
||||
echo "v0.7.7" |
||||
echo "v0.9.7" |
||||
} |
||||
|
||||
LATEST_STABLE="$(nvm_print_implicit_alias remote stable)" |
||||
[ "_$LATEST_STABLE" = "_0.6" ] || die "remote stable is not latest even minor: expected 0.6, got $LATEST_STABLE" |
||||
|
||||
LATEST_UNSTABLE="$(nvm_print_implicit_alias remote unstable)" |
||||
[ "_$LATEST_UNSTABLE" = "_0.9" ] || die "remote unstable is not latest odd minor: expected 0.9, got $LATEST_UNSTABLE" |
||||
|
||||
cleanup |
||||
|
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh |
||||
|
||||
die () { echo $@ ; exit 1; } |
||||
|
||||
. ../../../nvm.sh |
||||
|
||||
EXPECTED_MSG="Only implicit aliases 'stable' and 'unstable' are supported." |
||||
[ "_$(nvm_validate_implicit_alias 2>&1)" = "_$EXPECTED_MSG" ] \ |
||||
|| die "nvm_validate_implicit_alias did not require stable|unstable" |
||||
[ "_$(nvm_validate_implicit_alias foo 2>&1)" = "_$EXPECTED_MSG" ] \ |
||||
|| die "nvm_validate_implicit_alias did not require stable|unstable" |
||||
|
||||
EXIT_CODE="$(nvm_validate_implicit_alias >/dev/null 2>&1 ; echo $?)" |
||||
[ "_$EXIT_CODE" = "_1" ] \ |
||||
|| die "nvm_validate_implicit_alias without stable|unstable had wrong exit code: expected 1, got $EXIT_CODE" |
||||
|
||||
nvm_validate_implicit_alias stable || die "nvm_validate_implicit_alias stable did not exit 0" |
||||
nvm_validate_implicit_alias unstable || die "nvm_validate_implicit_alias unstable did not exit 0" |
||||
|
Loading…
Reference in new issue