Compare commits

..

57 Commits

Author SHA1 Message Date
Jordan Harband
4748b3a236 v0.17.3 2014-10-20 15:48:49 -07:00
Jordan Harband
2a61569881 http://nodejs.org/dist now redirects to https://nodejs.org/dist 2014-10-20 15:48:35 -07:00
Jordan Harband
f0471acbf5 v0.17.2 2014-09-29 14:32:44 -07:00
Jordan Harband
fda05fb64b Remove trailing whitespace. 2014-09-29 14:26:19 -07:00
Jordan Harband
2737a95645 Create nvm_ensure_version_prefix, and make nvm_format_version actually format the version. 2014-09-29 01:36:02 -07:00
Jordan Harband
5706aef3d0 nvm_format_version: add unit tests. 2014-09-29 01:34:50 -07:00
Jordan Harband
cd4fc8fb2c Adding unit tests for nvm_ls_remote
`nvm_download` is stubbed, to avoid making network calls.
2014-09-28 22:00:20 -07:00
Jordan Harband
050a2ee9d3 nvm_remote_version: add unit tests
`nvm_ls_remote` is stubbed out to avoid making network calls here.
2014-09-28 18:12:25 -07:00
Jordan Harband
ff92ba7f43 Silence more secondary "deactivate" output. 2014-09-28 16:50:50 -07:00
Jordan Harband
804f2759f8 Ensure that nvm use works when .nvmrc contains "system" 2014-09-28 16:50:50 -07:00
Jordan Harband
d5fe657382 Ensure nvm_rc_version always modifies $NVM_RC_VERSION, rather than retaining its value from previous runs. 2014-09-28 16:50:50 -07:00
Jordan Harband
3e4613fd66 Don't output nvm deactivate output when running nvm use system 2014-09-28 16:50:50 -07:00
Jordan Harband
9aec19a692 Update bash completion commands for nvm 2014-09-28 16:50:49 -07:00
Jordan Harband
b707d8b072 nvm_ls: format the version immediately, so that nvm ls 0.0.1 doesn't return nvm ls 0.0.10 2014-09-28 10:14:27 -07:00
Jordan Harband
be605cb12b Adding a failing test: nvm ls 0.0.x includes v0.0.xy 2014-09-28 10:18:00 -07:00
Jordan Harband
3c66c20570 Improving "nvm alias" tests to test for all cases. 2014-09-28 10:07:50 -07:00
Jordan Harband
59bfdb9863 Making sure fast alias tests do their own teardown. 2014-09-28 09:54:35 -07:00
Jordan Harband
25bd2bb018 Make nvm ls-remote return nvm_ls_remote's exit code. 2014-09-28 09:41:02 -07:00
Jordan Harband
4a8a5a1180 Shell-quoting some more things. 2014-09-27 17:30:09 -07:00
Jordan Harband
145da7eef8 v0.17.1 2014-09-26 23:22:56 -07:00
Jordan Harband
4cf56ae186 Remove unnecessary local var declaration. Fixes #535 2014-09-26 23:22:38 -07:00
Jordan Harband
5ad00f13fa Suppress error messages in case there's no master branch.
Fixes #533.
2014-09-25 22:10:48 -07:00
Jordan Harband
53f9841c6c v0.17.0 2014-09-24 14:58:07 -07:00
Jordan Harband
444efdb08b Adding some more quotes and $() 2014-09-23 23:51:02 -07:00
Jordan Harband
6fde379707 Use _ instead of ~ as a sentinel 2014-09-23 23:50:12 -07:00
Jordan Harband
ce69c8413e More shellcheck recommendations 2014-09-23 23:49:51 -07:00
Jordan Harband
51f6109f8d Use $() instead of backticks; add quotes 2014-09-23 23:49:10 -07:00
Jordan Harband
4f081ce4be Collapsing some if/else conditions with elif 2014-09-23 23:48:31 -07:00
Jordan Harband
db0051753a Compare shell variable contents with a sentinel. 2014-09-23 23:47:17 -07:00
Jordan Harband
cf1110ecea Quote $NVM_DIR in commands 2014-09-23 23:46:23 -07:00
Jordan Harband
34b97bf76d Adding shell var quotes in nvm alias 2014-09-23 17:23:37 -07:00
Jordan Harband
b962a590a2 Removing an extra mkdir -p 2014-09-23 17:23:09 -07:00
Jordan Harband
ddb25ed5a3 Merge pull request #530 from creationix/copy_packages_from_on_install
nvm install: Add --copy-packages-from option
2014-09-21 18:57:04 -07:00
Jordan Harband
486d14f5f8 Copy packages when applicable, whenever nvm install would normally nvm use and exit. 2014-09-21 18:25:15 -07:00
Jordan Harband
622fdd2cd0 Error out early if the --copy-packages-from version is invalid. 2014-09-21 18:03:11 -07:00
Jordan Harband
eddbe15ee8 Extract --copy-packages-from argument. 2014-09-21 18:03:11 -07:00
Jordan Harband
2e161fe414 nvm install: Remove this redundant "already installed" check. 2014-09-21 11:22:05 -07:00
Jordan Harband
a42b90d215 Adding some helpful output to nvm copy-packages 2014-09-21 11:02:03 -07:00
Jordan Harband
6bae6c07f2 Merge pull request #528 from creationix/remove_last_expr
Remove last usages of `expr`
2014-09-19 12:37:33 -07:00
Jordan Harband
7fd6d05426 Instead of using expr to check if paths need cleaning, compare cleaned paths to original paths and export appropriately. 2014-09-19 10:10:53 -07:00
Jordan Harband
5ef092b2c8 Using nvm_version_greater and nvm_version_greater_than_or_equal_to instead of expr in nvm install. 2014-09-19 10:10:37 -07:00
Jordan Harband
cb6456fd85 Using nvm_version_greater_than_or_equal_to instead of nvm_version_greater where it increases readability. 2014-09-19 10:10:01 -07:00
Jordan Harband
991fb85047 Adding nvm_version_greater_than_or_equal_to 2014-09-19 10:09:45 -07:00
Jordan Harband
edf36a8ea7 Merge pull request #526 from creationix/add_nvm_num_version_groups
Replace `expr` with `nvm_num_version_groups`
2014-09-16 10:13:57 -07:00
Jordan Harband
35466187f2 Noting the changed behavior of nvm ls vx.y. to return something useful. 2014-09-16 09:03:48 -07:00
Jordan Harband
c992b1766c Use nvm_num_version_groups in nvm_ls 2014-09-16 09:03:47 -07:00
Jordan Harband
4b2bc0be08 Adding nvm_num_version_groups 2014-09-16 09:03:47 -07:00
Jordan Harband
15b3e7b6a8 Removing unnecessary cleanup in "Listing Versions" tests. 2014-09-16 09:03:47 -07:00
Jordan Harband
8d05ab63f1 Silencing error output in the "Listing Versions" teardown script. 2014-09-16 09:03:47 -07:00
Jordan Harband
da693eaea1 Tweaking nvm_ls_current tests. 2014-09-16 09:03:47 -07:00
Jordan Harband
5363ff8916 Merge pull request #525 from creationix/add_unit_tests
Add unit tests
2014-09-15 20:46:31 -07:00
Jordan Harband
e186fa27a7 Use nvm_version_greater in nvm_binary_available 2014-09-15 09:20:47 -07:00
Jordan Harband
f6e0104685 Use nvm_normalize_version in nvm_version_greater 2014-09-15 09:17:41 -07:00
Jordan Harband
97d4e2f88f Unit tests: add nvm_find_up 2014-09-15 09:09:56 -07:00
Jordan Harband
e0a22ccf4a Unit tests: add nvm_has 2014-09-15 09:09:51 -07:00
Jordan Harband
d5d66c34d9 If there's no "default" specified, fall back to an .nvmrc file. 2014-09-15 07:54:30 -07:00
Jordan Harband
152904e3fb Return a nonzero exit code from nvm_rc_version when no .nvmrc found 2014-09-15 07:51:00 -07:00
23 changed files with 892 additions and 125 deletions

View File

@@ -8,11 +8,11 @@ First you'll need to make sure your system has a c++ compiler. For OSX, XCode w
To install you could use the [install script][2] using cURL:
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | bash
curl https://raw.githubusercontent.com/creationix/nvm/v0.17.3/install.sh | bash
or Wget:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | bash
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.17.3/install.sh | bash
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>
@@ -169,7 +169,7 @@ After the v0.8.6 release of node, nvm tries to install from binary packages. But
nvm install -s 0.8.6
[1]: https://github.com/creationix/nvm.git
[2]: https://github.com/creationix/nvm/blob/v0.16.1/install.sh
[2]: https://github.com/creationix/nvm/blob/v0.17.3/install.sh
[3]: https://travis-ci.org/creationix/nvm
[Urchin]: https://github.com/scraperwiki/urchin

View File

@@ -18,9 +18,11 @@ __nvm_commands ()
current_word="${COMP_WORDS[COMP_CWORD]}"
COMMANDS='\
help install uninstall use run\
ls ls-remote list list-remote deactivate\
alias unalias copy-packages clear-cache version'
help install uninstall use run exec\
alias unalias copy-packages
current list ls list-remote ls-remote\
clear-cache deactivate unload
version'
if [ ${#COMP_WORDS[@]} == 4 ]; then

View File

@@ -44,12 +44,13 @@ install_nvm_from_git() {
mkdir -p "$NVM_DIR"
git clone "$NVM_SOURCE" "$NVM_DIR"
fi
cd $NVM_DIR && git checkout v0.16.1 && git branch -D master || true
cd "$NVM_DIR" && git checkout v0.17.3 && git branch -D master >/dev/null 2>&1
return
}
install_nvm_as_script() {
if [ -z "$NVM_SOURCE" ]; then
NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/v0.16.1/nvm.sh"
NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/v0.17.3/nvm.sh"
fi
# Downloading to $NVM_DIR
@@ -75,22 +76,19 @@ if [ -z "$METHOD" ]; then
echo >&2 "You need git, curl, or wget to install nvm"
exit 1
fi
else
if [ "$METHOD" = "git" ]; then
elif [ "~$METHOD" = "~git" ]; then
if ! nvm_has "git"; then
echo >&2 "You need git to install nvm"
exit 1
fi
install_nvm_from_git
fi
if [ "$METHOD" = "script" ]; then
elif [ "~$METHOD" = "~script" ]; then
if ! nvm_has "nvm_download"; then
echo >&2 "You need curl or wget to install nvm"
exit 1
fi
install_nvm_as_script
fi
fi
echo

228
nvm.sh
View File

@@ -28,7 +28,7 @@ nvm_download() {
}
nvm_has_system_node() {
[ "$(nvm deactivate 2> /dev/null && command -v node)" != '' ]
[ "$(nvm deactivate >/dev/null 2>&1 && command -v node)" != '' ]
}
# Make zsh glob matching behave same as bash
@@ -50,7 +50,7 @@ unset NVM_SCRIPT_SOURCE 2> /dev/null
# Setup mirror location if not already set
if [ -z "$NVM_NODEJS_ORG_MIRROR" ]; then
export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist"
export NVM_NODEJS_ORG_MIRROR="https://nodejs.org/dist"
fi
nvm_tree_contains_path() {
@@ -93,22 +93,34 @@ nvm_find_nvmrc() {
# Obtain nvm version from rc file
nvm_rc_version() {
export NVM_RC_VERSION=''
local NVMRC_PATH
NVMRC_PATH="$(nvm_find_nvmrc)"
if [ -e "$NVMRC_PATH" ]; then
read NVM_RC_VERSION < "$NVMRC_PATH"
echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>"
else
>&2 echo "No .nvmrc file found"
return 1
fi
}
nvm_version_greater() {
local LHS
LHS=$(echo "$1" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}')
LHS=$(nvm_normalize_version "$1")
local RHS
RHS=$(echo "$2" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}')
RHS=$(nvm_normalize_version "$2")
[ $LHS -gt $RHS ];
}
nvm_version_greater_than_or_equal_to() {
local LHS
LHS=$(nvm_normalize_version "$1")
local RHS
RHS=$(nvm_normalize_version "$2")
[ $LHS -ge $RHS ];
}
nvm_version_dir() {
local NVM_USE_NEW_DIR
NVM_USE_NEW_DIR="$1"
@@ -150,7 +162,7 @@ nvm_version() {
return $?
fi
VERSION=`nvm_ls $PATTERN | tail -n1`
VERSION="$(nvm_ls "$PATTERN" | tail -n1)"
echo "$VERSION"
if [ "$VERSION" = 'N/A' ]; then
@@ -160,22 +172,47 @@ nvm_version() {
nvm_remote_version() {
local PATTERN
PATTERN=$1
PATTERN="$1"
local VERSION
VERSION=`nvm_ls_remote $PATTERN | tail -n1`
VERSION="$(nvm_ls_remote "$PATTERN" | tail -n1)"
echo "$VERSION"
if [ "$VERSION" = 'N/A' ]; then
if [ "_$VERSION" = '_N/A' ]; then
return 3
fi
}
nvm_normalize_version() {
echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }'
echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }'
}
nvm_ensure_version_prefix() {
echo "$1" | sed -e 's/^\([0-9]\)/v\1/g'
}
nvm_format_version() {
echo "$1" | sed -e 's/^\([0-9]\)/v\1/g'
local VERSION
VERSION="$(nvm_ensure_version_prefix "$1")"
if [ "_$(nvm_num_version_groups "$VERSION")" != "_3" ]; then
VERSION="$(echo "$VERSION" | sed -e 's/\.*$/.0/')"
nvm_format_version "$VERSION"
else
echo "$VERSION"
fi
}
nvm_num_version_groups() {
local VERSION
VERSION="$1"
if [ -z "$VERSION" ]; then
echo "0"
return
fi
local NVM_NUM_DOTS
NVM_NUM_DOTS=$(echo "$VERSION" | sed -e 's/^v//' | sed -e 's/\.$//' | sed -e 's/[^\.]//g')
local NVM_NUM_GROUPS
NVM_NUM_GROUPS=".$NVM_NUM_DOTS"
echo "${#NVM_NUM_GROUPS}"
}
nvm_strip_path() {
@@ -192,11 +229,9 @@ nvm_prepend_path() {
nvm_binary_available() {
# binaries started with node 0.8.6
local MINIMAL
MINIMAL="0.8.6"
local VERSION
VERSION=$1
[ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ]
local FIRST_VERSION_WITH_BINARY
FIRST_VERSION_WITH_BINARY="0.8.6"
nvm_version_greater_than_or_equal_to "$1" "$FIRST_VERSION_WITH_BINARY"
}
nvm_ls_current() {
@@ -228,18 +263,22 @@ nvm_ls() {
fi
if [ -f "$NVM_DIR/alias/$PATTERN" ]; then
nvm_version `cat $NVM_DIR/alias/$PATTERN`
nvm_version "$(cat "$NVM_DIR/alias/$PATTERN")"
return
fi
# If it looks like an explicit version, don't do anything funny
if [ `expr "$PATTERN" : "v[0-9]*\.[0-9]*\.[0-9]*$"` != 0 ]; then
PATTERN=$(nvm_ensure_version_prefix $PATTERN)
if [ "_$(echo "$PATTERN" | cut -c1-1)" = "_v" ] && [ "_$(nvm_num_version_groups "$PATTERN")" = "_3" ]; then
if [ -d "$(nvm_version_path "$PATTERN")" ]; then
VERSIONS="$PATTERN"
fi
else
PATTERN=$(nvm_format_version $PATTERN)
if [ `expr "$PATTERN" : "v[0-9]*\.[0-9]*$"` != 0 ]; then
PATTERN="$PATTERN."
if [ "_$PATTERN" != "_system" ]; then
local NUM_VERSION_GROUPS
NUM_VERSION_GROUPS="$(nvm_num_version_groups "$PATTERN")"
if [ "_$NUM_VERSION_GROUPS" = "_2" ] || [ "_$NUM_VERSION_GROUPS" = "_1" ]; then
PATTERN="$(echo "$PATTERN" | sed -e 's/\.*$//g')."
fi
fi
if [ -d "$(nvm_version_dir new)" ]; then
VERSIONS=`find "$(nvm_version_dir new)/" "$(nvm_version_dir old)/" -maxdepth 1 -type d -name "$PATTERN*" -exec basename '{}' ';' \
@@ -269,12 +308,12 @@ nvm_ls() {
nvm_ls_remote() {
local PATTERN
PATTERN=$1
PATTERN="$1"
local VERSIONS
local GREP_OPTIONS
GREP_OPTIONS=''
if [ -n "$PATTERN" ]; then
PATTERN=`nvm_format_version "$PATTERN"`
PATTERN="$(nvm_ensure_version_prefix "$PATTERN")"
else
PATTERN=".*"
fi
@@ -292,14 +331,14 @@ nvm_ls_remote() {
nvm_checksum() {
if nvm_has "sha1sum"; then
checksum=$(sha1sum $1 | \awk '{print $1}')
checksum="$(sha1sum "$1" | \awk '{print $1}')"
elif nvm_has "sha1"; then
checksum=$(sha1 -q $1)
checksum="$(sha1 -q "$1")"
else
checksum=$(shasum $1 | \awk '{print $1}')
checksum="$(shasum "$1" | \awk '{print $1}')"
fi
if [ "$checksum" = "$2" ]; then
if [ "_$checksum" = "_$2" ]; then
return
elif [ -z "$2" ]; then
echo 'Checksums empty' #missing in raspberry pi binary
@@ -442,20 +481,36 @@ nvm() {
else
shift
fi
[ -d "$(nvm_version_path "$provided_version")" ] && echo "$provided_version is already installed." >&2 && return
VERSION=`nvm_remote_version $provided_version`
VERSION="$(nvm_remote_version "$provided_version")"
ADDITIONAL_PARAMETERS=''
local PROVIDED_COPY_PACKAGES_FROM
local COPY_PACKAGES_FROM
while [ $# -ne 0 ]
do
if [ "_$(echo "$1" | cut -c 1-21)" = "_--copy-packages-from=" ]; then
PROVIDED_COPY_PACKAGES_FROM="$(echo "$1" | cut -c 22-)"
COPY_PACKAGES_FROM="$(nvm_version "$PROVIDED_COPY_PACKAGES_FROM")"
else
ADDITIONAL_PARAMETERS="$ADDITIONAL_PARAMETERS $1"
fi
shift
done
if [ "_$(nvm_ensure_version_prefix "$PROVIDED_COPY_PACKAGES_FROM")" = "_$VERSION" ]; then
echo "You can't copy global packages from the same version of node you're installing." >&2
return 4
elif [ ! -z "$PROVIDED_COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" = "_N/A" ]; then
echo "If --copy-packages-from is provided, it must point to an installed version of node." >&2
return 5
fi
if [ -d "$(nvm_version_path "$VERSION")" ]; then
echo "$VERSION is already installed." >&2
nvm use "$VERSION"
if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" != "_N/A" ]; then
nvm copy-packages "$COPY_PACKAGES_FROM"
fi
return $?
fi
@@ -485,7 +540,9 @@ nvm() {
mv "$tmpdir" "$(nvm_version_path "$VERSION")"
)
then
nvm use $VERSION
if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" != "_N/A" ]; then
nvm copy-packages "$COPY_PACKAGES_FROM"
fi
return $?
else
echo "Binary download failed, trying source." >&2
@@ -529,13 +586,15 @@ nvm() {
$make $MAKE_CXX install
)
then
nvm use $VERSION
if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" != "_N/A" ]; then
nvm copy-packages "$COPY_PACKAGES_FROM"
fi
if ! nvm_has "npm" ; then
echo "Installing npm..."
if [ "`expr "$VERSION" : '\(^v0\.1\.\)'`" != '' ]; then
if nvm_version_greater 0.2.0 "$VERSION"; then
echo "npm requires node v0.2.3 or higher" >&2
elif [ "`expr "$VERSION" : '\(^v0\.2\.\)'`" != '' ]; then
if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then
elif nvm_version_greater_than_or_equal_to "$VERSION" 0.2.0; then
if nvm_version_greater 0.2.3 "$VERSION"; then
echo "npm requires node v0.2.3 or higher" >&2
else
nvm_download https://npmjs.org/install.sh -o - | clean=yes npm_install=0.2.19 sh
@@ -548,10 +607,12 @@ nvm() {
echo "nvm: install $VERSION failed!" >&2
return 1
fi
return $?
;;
"uninstall" )
[ $# -ne 2 ] && nvm help && return
PATTERN=`nvm_format_version $2`
PATTERN=`nvm_ensure_version_prefix $2`
if [ "$PATTERN" = `nvm_version` ]; then
echo "nvm: Cannot uninstall currently-active node version, $PATTERN." >&2
return 1
@@ -580,24 +641,30 @@ nvm() {
;;
"deactivate" )
if [ `expr "$PATH" : ".*$NVM_DIR/.*/bin.*"` != 0 ] ; then
export PATH=`nvm_strip_path "$PATH" "/bin"`
local NEWPATH
NEWPATH="$(nvm_strip_path "$PATH" "/bin")"
if [ "$PATH" = "$NEWPATH" ]; then
echo "Could not find $NVM_DIR/*/bin in \$PATH" >&2
else
export PATH="$NEWPATH"
hash -r
echo "$NVM_DIR/*/bin removed from \$PATH"
else
echo "Could not find $NVM_DIR/*/bin in \$PATH" >&2
fi
if [ `expr "$MANPATH" : ".*$NVM_DIR/.*/share/man.*"` != 0 ] ; then
export MANPATH=`nvm_strip_path "$MANPATH" "/share/man"`
echo "$NVM_DIR/*/share/man removed from \$MANPATH"
else
NEWPATH="$(nvm_strip_path "$MANPATH" "/share/man")"
if [ "$MANPATH" = "$NEWPATH" ]; then
echo "Could not find $NVM_DIR/*/share/man in \$MANPATH" >&2
fi
if [ `expr "$NODE_PATH" : ".*$NVM_DIR/.*/lib/node_modules.*"` != 0 ] ; then
export NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
else
export MANPATH="$NEWPATH"
echo "$NVM_DIR/*/share/man removed from \$MANPATH"
fi
NEWPATH="$(nvm_strip_path "$NODE_PATH" "/lib/node_modules")"
if [ "$NODE_PATH" = "$NEWPATH" ]; then
echo "Could not find $NVM_DIR/*/lib/node_modules in \$NODE_PATH" >&2
else
export NODE_PATH="$NEWPATH"
echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
fi
;;
"use" )
@@ -610,26 +677,26 @@ nvm() {
if [ -n "$NVM_RC_VERSION" ]; then
VERSION=`nvm_version $NVM_RC_VERSION`
fi
elif [ "_$2" != '_system' ]; then
VERSION="$(nvm_version "$2")"
else
if [ $2 = 'system' ]; then
if nvm_has_system_node && nvm deactivate; then
VERSION="$2"
fi
if [ -z "$VERSION" ]; then
nvm help
return 127
fi
if [ "_$VERSION" = '_system' ]; then
if nvm_has_system_node && nvm deactivate >/dev/null 2>&1; then
echo "Now using system version of node: $(node -v 2>/dev/null)."
return
else
echo "System version of node not found." >&2
return 127
fi
else
VERSION=`nvm_version $2`
fi
fi
if [ -z "$VERSION" ]; then
nvm help
return 127
fi
if [ -z "$VERSION" ]; then
VERSION=`nvm_version $2`
fi
local NVM_VERSION_DIR
NVM_VERSION_DIR="$(nvm_version_path "$VERSION")"
if [ ! -d "$NVM_VERSION_DIR" ]; then
@@ -710,13 +777,13 @@ nvm() {
shift
local provided_version
provided_version=$1
provided_version="$1"
if [ -n "$provided_version" ]; then
VERSION=`nvm_version $provided_version`
if [ $VERSION = "N/A" ]; then
provided_version=''
nvm_rc_version
VERSION=`nvm_version $NVM_RC_VERSION`
VERSION="$(nvm_version "$NVM_RC_VERSION")"
else
shift
fi
@@ -743,41 +810,43 @@ nvm() {
return $NVM_LS_EXIT_CODE
;;
"ls-remote" | "list-remote" )
nvm_print_versions "`nvm_ls_remote $2`"
return
local NVM_LS_EXIT_CODE
NVM_LS_OUTPUT=$(nvm_ls_remote "$2")
NVM_LS_EXIT_CODE=$?
nvm_print_versions "$NVM_LS_OUTPUT"
return $NVM_LS_EXIT_CODE
;;
"current" )
nvm_version current
;;
"alias" )
mkdir -p $NVM_DIR/alias
mkdir -p "$NVM_DIR/alias"
if [ $# -le 2 ]; then
local DEST
for ALIAS in $NVM_DIR/alias/$2*; do
for ALIAS in "$NVM_DIR"/alias/"$2"*; do
if [ -e "$ALIAS" ]; then
DEST=`cat $ALIAS`
VERSION=`nvm_version $DEST`
if [ "$DEST" = "$VERSION" ]; then
echo "$(basename $ALIAS) -> $DEST"
DEST="$(cat "$ALIAS")"
VERSION="$(nvm_version "$DEST")"
if [ "_$DEST" = "_$VERSION" ]; then
echo "$(basename "$ALIAS") -> $DEST"
else
echo "$(basename $ALIAS) -> $DEST (-> $VERSION)"
echo "$(basename "$ALIAS") -> $DEST (-> $VERSION)"
fi
fi
done
return
fi
if [ -z "$3" ]; then
rm -f $NVM_DIR/alias/$2
rm -f "$NVM_DIR/alias/$2"
echo "$2 -> *poof*"
return
fi
mkdir -p $NVM_DIR/alias
VERSION=`nvm_version $3`
VERSION="$(nvm_version "$3")"
if [ $? -ne 0 ]; then
echo "! WARNING: Version '$3' does not exist." >&2
fi
echo $3 > "$NVM_DIR/alias/$2"
if [ ! "$3" = "$VERSION" ]; then
if [ ! "_$3" = "_$VERSION" ]; then
echo "$2 -> $3 (-> $VERSION)"
else
echo "$2 -> $3"
@@ -817,6 +886,7 @@ nvm() {
INSTALLS=$(nvm use "$VERSION" > /dev/null && npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | xargs)
fi
echo "Copying global packages from $VERSION..."
echo "$INSTALLS" | xargs npm install -g --quiet
;;
"clear-cache" )
@@ -827,10 +897,10 @@ nvm() {
nvm_version $2
;;
"--version" )
echo "0.16.1"
echo "0.17.3"
;;
"unload" )
unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version nvm_version_greater > /dev/null 2>&1
unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version nvm_version_greater nvm_version_greater_than_or_equal_to > /dev/null 2>&1
unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
;;
* )
@@ -839,5 +909,9 @@ nvm() {
esac
}
nvm ls default >/dev/null && nvm use default >/dev/null || true
if nvm ls default >/dev/null; then
nvm use default >/dev/null
elif nvm_rc_version >/dev/null 2>&1; then
nvm use >/dev/null
fi

View File

@@ -1,6 +1,6 @@
{
"name": "nvm",
"version": "0.16.1",
"version": "0.17.3",
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
"directories": {
"test": "test"

View File

@@ -1,4 +1,28 @@
#!/bin/sh
. ../../../nvm.sh
[ $(nvm alias | wc -l) = '10' ]
die () { echo $@ ; exit 1; }
NVM_ALIAS_OUTPUT=$(nvm alias)
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test1 -> 0.0.1 (-> v0.0.1)$' \
|| die "did not find test1 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test2 -> 0.0.2 (-> v0.0.2)$' \
|| die "did not find test2 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test3 -> 0.0.3 (-> v0.0.3)$' \
|| die "did not find test3 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test4 -> 0.0.4 (-> v0.0.4)$' \
|| die "did not find test4 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test5 -> 0.0.5 (-> v0.0.5)$' \
|| die "did not find test5 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test6 -> 0.0.6 (-> v0.0.6)$' \
|| die "did not find test6 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test7 -> 0.0.7 (-> v0.0.7)$' \
|| die "did not find test7 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test8 -> 0.0.8 (-> v0.0.8)$' \
|| die "did not find test8 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test9 -> 0.0.9 (-> v0.0.9)$' \
|| die "did not find test9 alias"
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test10 -> 0.0.10 (-> v0.0.10)$' \
|| die "did not find test10 alias"

View File

@@ -2,5 +2,6 @@
for i in $(seq 1 10)
do
echo v0.0.$i > ../../../alias/test$i
echo 0.0.$i > ../../../alias/test$i
mkdir -p ../../../v0.0.$i
done

8
test/fast/Aliases/teardown_dir Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/sh
for i in $(seq 1 10)
do
rm -f "../../../alias/test$i"
rm -rf "../../../v0.0.$i"
done

View File

@@ -0,0 +1,21 @@
#!/bin/sh
mkdir ../../../v0.0.2
mkdir ../../../v0.0.20
. ../../../nvm.sh
die () { echo $@ ; exit 1; }
# The result should contain only the appropriate version numbers.
nvm ls 0.0.2 | grep 'v0.0.2' > /dev/null
if [ $? -eq 0 ]; then
echo '"nvm ls 0.0.2" contained v0.0.2'
fi
nvm ls 0.0.2 | grep 'v0.0.20' > /dev/null
if [ $? -eq 0 ]; then
die '"nvm ls 0.0.2" contained v0.0.20'
fi

View File

@@ -1,7 +1,6 @@
#!/bin/sh
cleanup () { unset -f nvm_has_system_node; }
die () { cleanup ; echo $@ ; exit 1; }
die () { echo $@ ; exit 1; }
. ../../../nvm.sh

View File

@@ -2,13 +2,10 @@
mkdir ../../../v0.1.3
mkdir ../../../v0.2.3
mkdir ../../../versions
. ../../../nvm.sh
mkdir ../../../versions
[ -z "$(nvm ls | \grep 'versions')" ]
# The result should contain only the appropriate version numbers.
rmdir ../../../versions

View File

@@ -6,6 +6,6 @@ mkdir ../../../v0.1.2
nvm ls v0.1 | grep v0.1.2 &&
nvm ls v0.1.2 | grep v0.1.2 &&
nvm ls v0.1. | grep N/A &&
nvm ls v0.1. | grep v0.1.2 &&
nvm ls v0.1.1 | grep N/A

View File

@@ -1,12 +1,14 @@
rmdir ../../../v0.0.1
rmdir ../../../v0.0.3
rmdir ../../../v0.0.9
rmdir ../../../v0.1.2
rmdir ../../../v0.1.3
rmdir ../../../v0.2.3
rmdir ../../../v0.3.1
rmdir ../../../v0.3.3
rmdir ../../../v0.3.9
rmdir ../../../versions
unalias nvm_has_system_node
rmdir ../../../v0.0.1 >/dev/null 2>&1
rmdir ../../../v0.0.2 >/dev/null 2>&1
rmdir ../../../v0.0.3 >/dev/null 2>&1
rmdir ../../../v0.0.9 >/dev/null 2>&1
rmdir ../../../v0.0.20 >/dev/null 2>&1
rmdir ../../../v0.1.2 >/dev/null 2>&1
rmdir ../../../v0.1.3 >/dev/null 2>&1
rmdir ../../../v0.2.3 >/dev/null 2>&1
rmdir ../../../v0.3.1 >/dev/null 2>&1
rmdir ../../../v0.3.3 >/dev/null 2>&1
rmdir ../../../v0.3.9 >/dev/null 2>&1
rmdir ../../../versions >/dev/null 2>&1
unalias nvm_has_system_node >/dev/null 2>&1

View File

@@ -0,0 +1,31 @@
#!/bin/sh
die () { echo $@ ; cleanup ; exit 1; }
cleanup () {
rm -rf ../../v0.10.4
}
mkdir ../../v0.10.4
. ../../nvm.sh
nvm deactivate >/dev/null 2>&1
INSTALL_ERROR_MSG="$(nvm install v0.10.5 --copy-packages-from=0.11 2>&1)"
EXPECTED_ERROR_MSG="If --copy-packages-from is provided, it must point to an installed version of node."
[ "~$INSTALL_ERROR_MSG" = "~$EXPECTED_ERROR_MSG" ] \
|| die ""nvm install --copy-packages" should fail when given an uninstalled version: expected '$EXPECTED_ERROR_MSG', got '$INSTALL_ERROR_MSG'"
INSTALL_EXIT_CODE="$(nvm install v0.10.5 --copy-packages-from=0.11 >/dev/null 2>&1; echo $?)"
[ "~$INSTALL_EXIT_CODE" = "~5" ] \
|| die ""nvm install --copy-packages" should exit with code 5 when given an uninstalled version, got $INSTALL_EXIT_CODE"
INSTALL_ERROR_MSG="$(nvm install v0.10.5 --copy-packages-from=0.10.5 2>&1)"
EXPECTED_ERROR_MSG="You can't copy global packages from the same version of node you're installing."
[ "~$INSTALL_ERROR_MSG" = "~$EXPECTED_ERROR_MSG" ] \
|| die ""nvm install --copy-packages" should fail when given the same version: expected '$EXPECTED_ERROR_MSG', got '$INSTALL_ERROR_MSG'"
INSTALL_EXIT_CODE="$(nvm install v0.10.5 --copy-packages-from=0.10.5 >/dev/null 2>&1; echo $?)"
[ "~$INSTALL_EXIT_CODE" = "~4" ] \
|| die ""nvm install --copy-packages" should exit with code 4 when given the same version, got $INSTALL_EXIT_CODE"

View File

@@ -0,0 +1,26 @@
#!/bin/sh
die () { echo $@ ; cleanup ; exit 1; }
setup() {
cleanup
mkdir -p tmp_nvm_find_up/a/b/c/d
touch tmp_nvm_find_up/test
touch tmp_nvm_find_up/a/b/c/test
}
cleanup () {
rm -rf tmp_nvm_find_up
}
. ../../../nvm.sh
setup
TEST_DIR="$PWD"
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 1 dir up"
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 2 dirs up"
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find in current dir"
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c/d nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find 1 level up from current dir"
cleanup

View File

@@ -0,0 +1,14 @@
#!/bin/sh
die () { echo $@ ; exit 1; }
. ../../../nvm.sh
OUTPUT="$(nvm_format_version 0.1.2)"
EXPECTED_OUTPUT="v0.1.2"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_format_version 0.1.2 did not return $EXPECTED_OUTPUT; got $OUTPUT"
OUTPUT="$(nvm_format_version 0.1)"
EXPECTED_OUTPUT="v0.1.0"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_format_version 0.1.0 did not return $EXPECTED_OUTPUT; got $OUTPUT"

12
test/fast/Unit tests/nvm_has Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/sh
die () { echo $@ ; exit 1; }
. ../../../nvm.sh
nvm_has cat && type cat > /dev/null || die 'nvm_has locates "cat" properly'
[ "~$(nvm_has foobarbaz 2>&1)" = "~" ] || die "nvm_has does not suppress error output"
! nvm_has foobarbaz && ! type foobarbaz >/dev/null 2>&1 || die "nvm_has does not return a nonzero exit code when not found"

View File

@@ -6,7 +6,7 @@ die () { echo $@ ; exit 1; }
return_zero () { return 0; }
[ "$( (nvm deactivate > /dev/null 2>&1) && nvm_ls_current)" = "system" ] || die 'when deactivated, did not return "system"'
[ "$(nvm deactivate > /dev/null 2>&1 ; nvm_ls_current)" = "system" ] || die 'when deactivated, did not return "system"'
TEST_PWD=$(pwd)
TEST_DIR="$TEST_PWD/nvm_ls_current_tmp"

View File

@@ -0,0 +1,468 @@
#!/bin/sh
die () { echo $@ ; cleanup ; exit 1; }
cleanup() {
unset -f nvm_download
}
. ../../../nvm.sh
# sample output at the time the test was written
nvm_download() {
echo 'foo "v0.10.0'
echo 'foo "v0.10.0'
echo 'foo "v0.10.1'
echo 'foo "v0.10.1'
echo 'foo "v0.10.10'
echo 'foo "v0.10.10'
echo 'foo "v0.10.11'
echo 'foo "v0.10.11'
echo 'foo "v0.10.12'
echo 'foo "v0.10.12'
echo 'foo "v0.10.13'
echo 'foo "v0.10.13'
echo 'foo "v0.10.14'
echo 'foo "v0.10.14'
echo 'foo "v0.10.15'
echo 'foo "v0.10.15'
echo 'foo "v0.10.16'
echo 'foo "v0.10.16'
echo 'foo "v0.10.16'
echo 'foo "v0.10.16'
echo 'foo "v0.10.17'
echo 'foo "v0.10.17'
echo 'foo "v0.10.18'
echo 'foo "v0.10.18'
echo 'foo "v0.10.19'
echo 'foo "v0.10.19'
echo 'foo "v0.10.2'
echo 'foo "v0.10.2'
echo 'foo "v0.10.20'
echo 'foo "v0.10.20'
echo 'foo "v0.10.21'
echo 'foo "v0.10.21'
echo 'foo "v0.10.22'
echo 'foo "v0.10.22'
echo 'foo "v0.10.23'
echo 'foo "v0.10.23'
echo 'foo "v0.10.24'
echo 'foo "v0.10.24'
echo 'foo "v0.10.25'
echo 'foo "v0.10.25'
echo 'foo "v0.10.26'
echo 'foo "v0.10.26'
echo 'foo "v0.10.27'
echo 'foo "v0.10.27'
echo 'foo "v0.10.28'
echo 'foo "v0.10.28'
echo 'foo "v0.10.29'
echo 'foo "v0.10.29'
echo 'foo "v0.10.3'
echo 'foo "v0.10.3'
echo 'foo "v0.10.30'
echo 'foo "v0.10.30'
echo 'foo "v0.10.31'
echo 'foo "v0.10.31'
echo 'foo "v0.10.32'
echo 'foo "v0.10.32'
echo 'foo "v0.10.4'
echo 'foo "v0.10.4'
echo 'foo "v0.10.5'
echo 'foo "v0.10.5'
echo 'foo "v0.10.6'
echo 'foo "v0.10.6'
echo 'foo "v0.10.7'
echo 'foo "v0.10.7'
echo 'foo "v0.10.8'
echo 'foo "v0.10.8'
echo 'foo "v0.10.9'
echo 'foo "v0.10.9'
echo 'foo "v0.11.0'
echo 'foo "v0.11.0'
echo 'foo "v0.11.1'
echo 'foo "v0.11.1'
echo 'foo "v0.11.10'
echo 'foo "v0.11.10'
echo 'foo "v0.11.11'
echo 'foo "v0.11.11'
echo 'foo "v0.11.12'
echo 'foo "v0.11.12'
echo 'foo "v0.11.13'
echo 'foo "v0.11.13'
echo 'foo "v0.11.14'
echo 'foo "v0.11.14'
echo 'foo "v0.11.2'
echo 'foo "v0.11.2'
echo 'foo "v0.11.3'
echo 'foo "v0.11.3'
echo 'foo "v0.11.4'
echo 'foo "v0.11.4'
echo 'foo "v0.11.5'
echo 'foo "v0.11.5'
echo 'foo "v0.11.6'
echo 'foo "v0.11.6'
echo 'foo "v0.11.7'
echo 'foo "v0.11.7'
echo 'foo "v0.11.8'
echo 'foo "v0.11.8'
echo 'foo "v0.11.9'
echo 'foo "v0.11.9'
echo 'foo "v0.5.1'
echo 'foo "v0.5.1'
echo 'foo "v0.5.10'
echo 'foo "v0.5.10'
echo 'foo "v0.5.2'
echo 'foo "v0.5.2'
echo 'foo "v0.5.3'
echo 'foo "v0.5.3'
echo 'foo "v0.5.4'
echo 'foo "v0.5.4'
echo 'foo "v0.5.5'
echo 'foo "v0.5.5'
echo 'foo "v0.5.6'
echo 'foo "v0.5.6'
echo 'foo "v0.5.7'
echo 'foo "v0.5.7'
echo 'foo "v0.5.8'
echo 'foo "v0.5.8'
echo 'foo "v0.5.9'
echo 'foo "v0.5.9'
echo 'foo "v0.6.0'
echo 'foo "v0.6.0'
echo 'foo "v0.6.1'
echo 'foo "v0.6.1'
echo 'foo "v0.6.10'
echo 'foo "v0.6.10'
echo 'foo "v0.6.11'
echo 'foo "v0.6.11'
echo 'foo "v0.6.12'
echo 'foo "v0.6.12'
echo 'foo "v0.6.13'
echo 'foo "v0.6.13'
echo 'foo "v0.6.14'
echo 'foo "v0.6.14'
echo 'foo "v0.6.15'
echo 'foo "v0.6.15'
echo 'foo "v0.6.16'
echo 'foo "v0.6.16'
echo 'foo "v0.6.17'
echo 'foo "v0.6.17'
echo 'foo "v0.6.18'
echo 'foo "v0.6.18'
echo 'foo "v0.6.19'
echo 'foo "v0.6.19'
echo 'foo "v0.6.2'
echo 'foo "v0.6.2'
echo 'foo "v0.6.20'
echo 'foo "v0.6.20'
echo 'foo "v0.6.21'
echo 'foo "v0.6.21'
echo 'foo "v0.6.3'
echo 'foo "v0.6.3'
echo 'foo "v0.6.4'
echo 'foo "v0.6.4'
echo 'foo "v0.6.5'
echo 'foo "v0.6.5'
echo 'foo "v0.6.6'
echo 'foo "v0.6.6'
echo 'foo "v0.6.7'
echo 'foo "v0.6.7'
echo 'foo "v0.6.8'
echo 'foo "v0.6.8'
echo 'foo "v0.6.9'
echo 'foo "v0.6.9'
echo 'foo "v0.7.0'
echo 'foo "v0.7.0'
echo 'foo "v0.7.1'
echo 'foo "v0.7.1'
echo 'foo "v0.7.10'
echo 'foo "v0.7.10'
echo 'foo "v0.7.11'
echo 'foo "v0.7.11'
echo 'foo "v0.7.12'
echo 'foo "v0.7.12'
echo 'foo "v0.7.2'
echo 'foo "v0.7.2'
echo 'foo "v0.7.3'
echo 'foo "v0.7.3'
echo 'foo "v0.7.4'
echo 'foo "v0.7.4'
echo 'foo "v0.7.5'
echo 'foo "v0.7.5'
echo 'foo "v0.7.6'
echo 'foo "v0.7.6'
echo 'foo "v0.7.7'
echo 'foo "v0.7.7'
echo 'foo "v0.7.8'
echo 'foo "v0.7.8'
echo 'foo "v0.7.9'
echo 'foo "v0.7.9'
echo 'foo "v0.8.0'
echo 'foo "v0.8.0'
echo 'foo "v0.8.1'
echo 'foo "v0.8.1'
echo 'foo "v0.8.10'
echo 'foo "v0.8.10'
echo 'foo "v0.8.11'
echo 'foo "v0.8.11'
echo 'foo "v0.8.12'
echo 'foo "v0.8.12'
echo 'foo "v0.8.13'
echo 'foo "v0.8.13'
echo 'foo "v0.8.14'
echo 'foo "v0.8.14'
echo 'foo "v0.8.15'
echo 'foo "v0.8.15'
echo 'foo "v0.8.16'
echo 'foo "v0.8.16'
echo 'foo "v0.8.17'
echo 'foo "v0.8.17'
echo 'foo "v0.8.18'
echo 'foo "v0.8.18'
echo 'foo "v0.8.19'
echo 'foo "v0.8.19'
echo 'foo "v0.8.2'
echo 'foo "v0.8.2'
echo 'foo "v0.8.20'
echo 'foo "v0.8.20'
echo 'foo "v0.8.21'
echo 'foo "v0.8.21'
echo 'foo "v0.8.22'
echo 'foo "v0.8.22'
echo 'foo "v0.8.23'
echo 'foo "v0.8.23'
echo 'foo "v0.8.24'
echo 'foo "v0.8.24'
echo 'foo "v0.8.25'
echo 'foo "v0.8.25'
echo 'foo "v0.8.26'
echo 'foo "v0.8.26'
echo 'foo "v0.8.27'
echo 'foo "v0.8.27'
echo 'foo "v0.8.28'
echo 'foo "v0.8.28'
echo 'foo "v0.8.3'
echo 'foo "v0.8.3'
echo 'foo "v0.8.4'
echo 'foo "v0.8.4'
echo 'foo "v0.8.5'
echo 'foo "v0.8.5'
echo 'foo "v0.8.6'
echo 'foo "v0.8.6'
echo 'foo "v0.8.7'
echo 'foo "v0.8.7'
echo 'foo "v0.8.8'
echo 'foo "v0.8.8'
echo 'foo "v0.8.9'
echo 'foo "v0.8.9'
echo 'foo "v0.9.0'
echo 'foo "v0.9.0'
echo 'foo "v0.9.1'
echo 'foo "v0.9.1'
echo 'foo "v0.9.10'
echo 'foo "v0.9.10'
echo 'foo "v0.9.11'
echo 'foo "v0.9.11'
echo 'foo "v0.9.12'
echo 'foo "v0.9.12'
echo 'foo "v0.9.2'
echo 'foo "v0.9.2'
echo 'foo "v0.9.3'
echo 'foo "v0.9.3'
echo 'foo "v0.9.4'
echo 'foo "v0.9.4'
echo 'foo "v0.9.5'
echo 'foo "v0.9.5'
echo 'foo "v0.9.6'
echo 'foo "v0.9.6'
echo 'foo "v0.9.7'
echo 'foo "v0.9.7'
echo 'foo "v0.9.8'
echo 'foo "v0.9.8'
echo 'foo "v0.9.9'
echo 'foo "v0.9.9'
echo 'foo "v0.1.100'
echo 'foo "v0.1.100'
echo 'foo "v0.1.101'
echo 'foo "v0.1.101'
echo 'foo "v0.1.102'
echo 'foo "v0.1.102'
echo 'foo "v0.1.103'
echo 'foo "v0.1.103'
echo 'foo "v0.1.104'
echo 'foo "v0.1.104'
echo 'foo "v0.1.14'
echo 'foo "v0.1.14'
echo 'foo "v0.1.15'
echo 'foo "v0.1.15'
echo 'foo "v0.1.16'
echo 'foo "v0.1.16'
echo 'foo "v0.1.17'
echo 'foo "v0.1.17'
echo 'foo "v0.1.18'
echo 'foo "v0.1.18'
echo 'foo "v0.1.19'
echo 'foo "v0.1.19'
echo 'foo "v0.1.20'
echo 'foo "v0.1.20'
echo 'foo "v0.1.21'
echo 'foo "v0.1.21'
echo 'foo "v0.1.22'
echo 'foo "v0.1.22'
echo 'foo "v0.1.23'
echo 'foo "v0.1.23'
echo 'foo "v0.1.24'
echo 'foo "v0.1.24'
echo 'foo "v0.1.25'
echo 'foo "v0.1.25'
echo 'foo "v0.1.26'
echo 'foo "v0.1.26'
echo 'foo "v0.1.27'
echo 'foo "v0.1.27'
echo 'foo "v0.1.28'
echo 'foo "v0.1.28'
echo 'foo "v0.1.29'
echo 'foo "v0.1.29'
echo 'foo "v0.1.30'
echo 'foo "v0.1.30'
echo 'foo "v0.1.31'
echo 'foo "v0.1.31'
echo 'foo "v0.1.32'
echo 'foo "v0.1.32'
echo 'foo "v0.1.33'
echo 'foo "v0.1.33'
echo 'foo "v0.1.90'
echo 'foo "v0.1.90'
echo 'foo "v0.1.91'
echo 'foo "v0.1.91'
echo 'foo "v0.1.92'
echo 'foo "v0.1.92'
echo 'foo "v0.1.93'
echo 'foo "v0.1.93'
echo 'foo "v0.1.94'
echo 'foo "v0.1.94'
echo 'foo "v0.1.95'
echo 'foo "v0.1.95'
echo 'foo "v0.1.96'
echo 'foo "v0.1.96'
echo 'foo "v0.1.97'
echo 'foo "v0.1.97'
echo 'foo "v0.1.98'
echo 'foo "v0.1.98'
echo 'foo "v0.1.99'
echo 'foo "v0.1.99'
echo 'foo "v0.10.14'
echo 'foo "v0.10.14'
echo 'foo "v0.2.0'
echo 'foo "v0.2.0'
echo 'foo "v0.2.1'
echo 'foo "v0.2.1'
echo 'foo "v0.2.2'
echo 'foo "v0.2.2'
echo 'foo "v0.2.3'
echo 'foo "v0.2.3'
echo 'foo "v0.2.4'
echo 'foo "v0.2.4'
echo 'foo "v0.2.5'
echo 'foo "v0.2.5'
echo 'foo "v0.2.6'
echo 'foo "v0.2.6'
echo 'foo "v0.3.0'
echo 'foo "v0.3.0'
echo 'foo "v0.3.1'
echo 'foo "v0.3.1'
echo 'foo "v0.3.2'
echo 'foo "v0.3.2'
echo 'foo "v0.3.3'
echo 'foo "v0.3.3'
echo 'foo "v0.3.4'
echo 'foo "v0.3.4'
echo 'foo "v0.3.5'
echo 'foo "v0.3.5'
echo 'foo "v0.3.6'
echo 'foo "v0.3.6'
echo 'foo "v0.3.7'
echo 'foo "v0.3.7'
echo 'foo "v0.3.8'
echo 'foo "v0.3.8'
echo 'foo "v0.4.0'
echo 'foo "v0.4.0'
echo 'foo "v0.4.1'
echo 'foo "v0.4.1'
echo 'foo "v0.4.10'
echo 'foo "v0.4.10'
echo 'foo "v0.4.11'
echo 'foo "v0.4.11'
echo 'foo "v0.4.12'
echo 'foo "v0.4.12'
echo 'foo "v0.4.2'
echo 'foo "v0.4.2'
echo 'foo "v0.4.3'
echo 'foo "v0.4.3'
echo 'foo "v0.4.4'
echo 'foo "v0.4.4'
echo 'foo "v0.4.5'
echo 'foo "v0.4.5'
echo 'foo "v0.4.6'
echo 'foo "v0.4.6'
echo 'foo "v0.4.7'
echo 'foo "v0.4.7'
echo 'foo "v0.4.8'
echo 'foo "v0.4.8'
echo 'foo "v0.4.9'
echo 'foo "v0.4.9'
echo 'foo "v0.5.0'
echo 'foo "v0.5.0'
echo 'foo "v0.6.1'
echo 'foo "v0.6.1'
echo 'foo "v0.6.10'
echo 'foo "v0.6.10'
echo 'foo "v0.6.11'
echo 'foo "v0.6.11'
echo 'foo "v0.6.12'
echo 'foo "v0.6.12'
echo 'foo "v0.6.13'
echo 'foo "v0.6.13'
echo 'foo "v0.6.2'
echo 'foo "v0.6.2'
echo 'foo "v0.6.3'
echo 'foo "v0.6.3'
echo 'foo "v0.6.4'
echo 'foo "v0.6.4'
echo 'foo "v0.6.5'
echo 'foo "v0.6.5'
echo 'foo "v0.6.6'
echo 'foo "v0.6.6'
echo 'foo "v0.6.7'
echo 'foo "v0.6.7'
echo 'foo "v0.6.8'
echo 'foo "v0.6.8'
echo 'foo "v0.6.9'
echo 'foo "v0.6.9'
}
OUTPUT="$(nvm_ls_remote foo)"
EXIT_CODE="$(nvm_ls_remote foo >/dev/null 2>&1 ; echo $?)"
[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
OUTPUT="$(nvm_ls_remote)"
EXPECTED_OUTPUT="$(nvm_download | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n)"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote did not output expected sorted versions; got $(echo "$OUTPUT") expected $(echo "$EXPECTED_OUTPUT")"
OUTPUT="$(nvm_ls_remote 0.3)"
EXPECTED_OUTPUT="v0.3.0
v0.3.1
v0.3.2
v0.3.3
v0.3.4
v0.3.5
v0.3.6
v0.3.7
v0.3.8"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote 0.3 did not output 0.3.x versions; got $OUTPUT"
cleanup

View File

@@ -0,0 +1,21 @@
#!/bin/sh
die () { echo $@ ; exit 1; }
. ../../../nvm.sh
[ "~$(nvm_num_version_groups)" = "~0" ] || die "no args should give 0"
[ "~$(nvm_num_version_groups a)" = "~1" ] || die "one letter should give 1"
[ "~$(nvm_num_version_groups 1)" = "~1" ] || die "1 should give 1"
[ "~$(nvm_num_version_groups v1)" = "~1" ] || die "v1 should give 1"
[ "~$(nvm_num_version_groups v1.)" = "~1" ] || die "v1. should give 1"
[ "~$(nvm_num_version_groups 1.2)" = "~2" ] || die "1.2 should give 2"
[ "~$(nvm_num_version_groups v1.2)" = "~2" ] || die "v1.2 should give 2"
[ "~$(nvm_num_version_groups v1.2.)" = "~2" ] || die "v1.2. should give 2"
[ "~$(nvm_num_version_groups 1.2.3)" = "~3" ] || die "1.2.3 should give 3"
[ "~$(nvm_num_version_groups v1.2.3)" = "~3" ] || die "v1.2.3 should give 3"
[ "~$(nvm_num_version_groups v1.2.3.)" = "~3" ] || die "v1.2.3. should give 3"

View File

@@ -0,0 +1,35 @@
#!/bin/sh
die () { echo $@ ; cleanup ; exit 1; }
cleanup() {
unset -f nvm_ls_remote
}
. ../../../nvm.sh
nvm_ls_remote() {
echo "N/A"
}
OUTPUT="$(nvm_remote_version foo)"
EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)"
[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
nvm_ls_remote() {
echo "test output"
echo "more test output"
echo "pattern received: _$1_"
}
OUTPUT="$(nvm_remote_version foo)"
EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)"
[ "_$OUTPUT" = "_pattern received: _foo_" ] \
|| die "nvm_remote_version foo did not return last line only of nvm_ls_remote foo; got $OUTPUT"
[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_version foo did not exit with 0, got $EXIT_CODE"
cleanup

View File

@@ -0,0 +1,34 @@
#!/bin/sh
die () { echo $@ ; exit 1; }
. ../../nvm.sh
# Remove the stuff we're clobbering.
[ -e ../../v0.9.7 ] && rm -R ../../v0.9.7
[ -e ../../v0.9.12 ] && rm -R ../../v0.9.12
# Install from binary
nvm install 0.9.7
# Check
[ -d ../../v0.9.7 ] || die "nvm install 0.9.7 didn't install"
nvm use 0.9.7
node --version | grep v0.9.7 > /dev/null || die "nvm use 0.9.7 failed"
npm install -g is-nan@1.0.1 || die "npm install -g is-nan failed"
npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"
nvm ls 0.9 | grep v0.9.7 > /dev/null || die "nvm ls 0.9 didn't show v0.9.7"
nvm install 0.9.12 --copy-packages-from=0.9 || die "nvm install 0.9.12 --copy-packages-from=0.9 failed"
[ -d ../../v0.9.12 ] || die "nvm install 0.9.12 didn't install"
nvm use 0.9
node --version | grep v0.9.12 > /dev/null || die "nvm ls 0.9 didn't use v0.9.12"
npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"