Merge remote-tracking branch 'upstream/master'

This commit is contained in:
edwmurph 2018-09-11 18:14:51 -04:00
commit 173f272085
43 changed files with 281 additions and 157 deletions

View File

@ -19,12 +19,13 @@ before_install:
- curl --version - curl --version
- wget --version - wget --version
install: install:
- if [ -z "${SHELLCHECK-}" ]; then nvm install node && npm install && npm prune && npm ls urchin doctoc eclint; fi - if [ -z "${SHELLCHECK-}" ]; then nvm install node && npm install && npm prune && npm ls urchin doctoc eclint dockerfile_lint; fi
- '[ -z "$WITHOUT_CURL" ] || sudo apt-get remove curl -y' - '[ -z "$WITHOUT_CURL" ] || sudo apt-get remove curl -y'
script: script:
- if [ -n "${MAKE_RELEASE-}" ]; then export GIT_EDITOR="sed -i '1 s/^/99.99.99 make release test/'" && git fetch --unshallow --tags && echo proceed | make TAG=99.99.99 release ; fi - if [ -n "${MAKE_RELEASE-}" ]; then export GIT_EDITOR="sed -i '1 s/^/99.99.99 make release test/'" && git fetch --unshallow --tags && echo proceed | make TAG=99.99.99 release ; fi
- if [ -n "${DOCTOCCHECK-}" ]; then cp README.md README.md.orig && npm run doctoc && diff -q README.md README.md.orig ; fi - if [ -n "${DOCTOCCHECK-}" ]; then cp README.md README.md.orig && npm run doctoc && diff -q README.md README.md.orig ; fi
- if [ -n "${ECLINT-}" ]; then npm run eclint ; fi - if [ -n "${ECLINT-}" ]; then npm run eclint ; fi
- if [ -n "${DOCKERFILE_LINT-}" ]; then npm run dockerfile_lint ; fi
- if [ -n "${SHELLCHECK-}" ]; then shellcheck -s bash nvm.sh && shellcheck -s sh nvm.sh && shellcheck -s dash nvm.sh && shellcheck -s ksh nvm.sh ; fi - if [ -n "${SHELLCHECK-}" ]; then shellcheck -s bash nvm.sh && shellcheck -s sh nvm.sh && shellcheck -s dash nvm.sh && shellcheck -s ksh nvm.sh ; fi
- if [ -n "${SHELLCHECK-}" ]; then shellcheck -s bash install.sh bash_completion nvm-exec ; fi - if [ -n "${SHELLCHECK-}" ]; then shellcheck -s bash install.sh bash_completion nvm-exec ; fi
- if [ -n "${SHELL-}" ] && [ -n "${TEST_SUITE}" ]; then if [ "${TEST_SUITE}" = 'installation_iojs' ]; then travis_retry make TEST_SUITE=$TEST_SUITE URCHIN="$(npm bin)/urchin" test-$SHELL ; else make TEST_SUITE=$TEST_SUITE URCHIN="$(npm bin)/urchin" test-$SHELL; fi; fi - if [ -n "${SHELL-}" ] && [ -n "${TEST_SUITE}" ]; then if [ "${TEST_SUITE}" = 'installation_iojs' ]; then travis_retry make TEST_SUITE=$TEST_SUITE URCHIN="$(npm bin)/urchin" test-$SHELL ; else make TEST_SUITE=$TEST_SUITE URCHIN="$(npm bin)/urchin" test-$SHELL; fi; fi
@ -42,6 +43,7 @@ env:
- DOCTOCCHECK=true - DOCTOCCHECK=true
- SHELLCHECK=true - SHELLCHECK=true
- ECLINT=true - ECLINT=true
- DOCKERFILE_LINT=true
- SHELL=bash TEST_SUITE=install_script - SHELL=bash TEST_SUITE=install_script
- SHELL=sh TEST_SUITE=fast - SHELL=sh TEST_SUITE=fast
- SHELL=dash TEST_SUITE=fast - SHELL=dash TEST_SUITE=fast
@ -89,3 +91,4 @@ env:
- NODE=4.6 TEST="nvm install-latest-npm" - NODE=4.6 TEST="nvm install-latest-npm"
- NODE=4.5 TEST="nvm install-latest-npm" - NODE=4.5 TEST="nvm install-latest-npm"
- NODE=4.4 TEST="nvm install-latest-npm" - NODE=4.4 TEST="nvm install-latest-npm"
- NODE=2 TEST="nvm install-latest-npm"

View File

@ -8,14 +8,19 @@
# Use Ubuntu Trusty Tahr as base image as we're using on Travis CI # Use Ubuntu Trusty Tahr as base image as we're using on Travis CI
# I also tested with Ubuntu 16.04, should be good with it! # I also tested with Ubuntu 16.04, should be good with it!
From ubuntu:14.04 FROM ubuntu:14.04
MAINTAINER Peter Dave Hello <hsu@peterdavehello.org> LABEL maintainer="Peter Dave Hello <hsu@peterdavehello.org>"
LABEL name="nvm-dev-env"
LABEL version="latest"
# Set the SHELL to bash with pipefail option
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Prevent dialog during apt install # Prevent dialog during apt install
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
# ShellCheck version # ShellCheck version
ENV SHELLCHECK_VERSION=0.4.7 ENV SHELLCHECK_VERSION=0.5.0
# Pick a Ubuntu apt mirror site for better speed # Pick a Ubuntu apt mirror site for better speed
# ref: https://launchpad.net/ubuntu/+archivemirrors # ref: https://launchpad.net/ubuntu/+archivemirrors
@ -83,6 +88,10 @@ RUN wget --version
# Add user "nvm" as non-root user # Add user "nvm" as non-root user
RUN useradd -ms /bin/bash nvm RUN useradd -ms /bin/bash nvm
# Copy and set permission for nvm directory
COPY . /home/nvm/.nvm/
RUN chown nvm:nvm -R "home/nvm/.nvm"
# Set sudoer for "nvm" # Set sudoer for "nvm"
RUN echo 'nvm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers RUN echo 'nvm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
@ -90,19 +99,17 @@ RUN echo 'nvm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
USER nvm USER nvm
# nvm # nvm
COPY . /home/nvm/.nvm/ RUN echo 'export NVM_DIR="$HOME/.nvm"' >> "$HOME/.bashrc"
RUN sudo chown nvm:nvm -R $HOME/.nvm RUN echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> "$HOME/.bashrc"
RUN echo 'export NVM_DIR="$HOME/.nvm"' >> $HOME/.bashrc RUN echo '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> "$HOME/.bashrc"
RUN echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> $HOME/.bashrc
RUN echo '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> $HOME/.bashrc
# nodejs and tools # nodejs and tools
RUN bash -c 'source $HOME/.nvm/nvm.sh && \ RUN bash -c 'source $HOME/.nvm/nvm.sh && \
nvm install node && \ nvm install node && \
npm install -g doctoc urchin && \ npm install -g doctoc urchin eclint dockerfile_lint && \
npm install --prefix "$HOME/.nvm/"' npm install --prefix "$HOME/.nvm/"'
# Set WORKDIR to nvm directory # Set WORKDIR to nvm directory
WORKDIR /home/nvm/.nvm WORKDIR /home/nvm/.nvm
ENTRYPOINT /bin/bash ENTRYPOINT ["/bin/bash"]

View File

@ -54,11 +54,15 @@ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh |
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc`, `~/.profile`, or `~/.bashrc`).</sub> <sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc`, `~/.profile`, or `~/.bashrc`).</sub>
<sub>**Note:** If the environment variable `$XDG_CONFIG_HOME` is present, it will place the `nvm` files there.</sub>
```sh ```sh
export NVM_DIR="$HOME/.nvm" export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
``` ```
**Note:** You can add `--no-use` to the end of the above script (...`nvm.sh --no-use`) to postpone using `nvm` until you manually [`use`](#usage) it.
You can customize the install source, directory, profile, and version using the `NVM_SOURCE`, `NVM_DIR`, `PROFILE`, and `NODE_VERSION` variables. You can customize the install source, directory, profile, and version using the `NVM_SOURCE`, `NVM_DIR`, `PROFILE`, and `NODE_VERSION` variables.
Eg: `curl ... | NVM_DIR="path/to/nvm"`. Ensure that the `NVM_DIR` does not contain a trailing slash. Eg: `curl ... | NVM_DIR="path/to/nvm"`. Ensure that the `NVM_DIR` does not contain a trailing slash.
@ -71,7 +75,7 @@ command -v nvm
``` ```
simply close your current terminal, open a new terminal, and try verifying again. simply close your current terminal, open a new terminal, and try verifying again.
**Note:** Since OS X 10.9, `/usr/bin/git` was preset by Xcode command line tools, which caused Git can't be properly detected if it's installed or not. You need to manually install the Xcode command line tools before running the install script, otherwise, it'll fail. (see [#1782](https://github.com/creationix/nvm/issues/1782)) **Note:** Since OS X 10.9, `/usr/bin/git` has been preset by Xcode command line tools, which means we can't properly detect if Git is installed or not. You need to manually install the Xcode command line tools before running the install script, otherwise, it'll fail. (see [#1782](https://github.com/creationix/nvm/issues/1782))
**Note:** On OS X, if you get `nvm: command not found` after running the install script, one of the following might be the reason:- **Note:** On OS X, if you get `nvm: command not found` after running the install script, one of the following might be the reason:-
- your system may not have a [`.bash_profile file`] where the command is set up. Simply create one with `touch ~/.bash_profile` and run the install script again - your system may not have a [`.bash_profile file`] where the command is set up. Simply create one with `touch ~/.bash_profile` and run the install script again
@ -378,7 +382,7 @@ load-nvmrc() {
if [ "$nvmrc_node_version" = "N/A" ]; then if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install nvm install
elif [ "$nvmrc_node_version" = "$node_version" ]; then elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use nvm use
fi fi
elif [ "$node_version" != "$(nvm version default)" ]; then elif [ "$node_version" != "$(nvm version default)" ]; then

View File

@ -7,7 +7,13 @@ nvm_has() {
} }
nvm_install_dir() { nvm_install_dir() {
command printf %s "${NVM_DIR:-"$HOME/.nvm"}" if [ ! -z "$NVM_DIR" ]; then
printf %s "${NVM_DIR}"
elif [ ! -z "$XDG_CONFIG_HOME" ]; then
printf %s "${XDG_CONFIG_HOME/nvm}"
else
printf %s "$HOME/.nvm"
fi
} }
nvm_latest_version() { nvm_latest_version() {
@ -212,6 +218,11 @@ nvm_try_profile() {
# Otherwise, an empty string is returned # Otherwise, an empty string is returned
# #
nvm_detect_profile() { nvm_detect_profile() {
if [ "${PROFILE-}" = '/dev/null' ]; then
# the user has specifically requested NOT to have nvm touch their profile
return
fi
if [ -n "${PROFILE}" ] && [ -f "${PROFILE}" ]; then if [ -n "${PROFILE}" ] && [ -f "${PROFILE}" ]; then
echo "${PROFILE}" echo "${PROFILE}"
return return

41
nvm.sh
View File

@ -130,7 +130,7 @@ nvm_has_system_iojs() {
} }
nvm_is_version_installed() { nvm_is_version_installed() {
[ -n "${1-}" ] && [ -d "$(nvm_version_path "${1-}" 2> /dev/null)" ] [ -n "${1-}" ] && [ -x "$(nvm_version_path "$1" 2> /dev/null)"/bin/node ]
} }
nvm_print_npm_version() { nvm_print_npm_version() {
@ -1043,9 +1043,9 @@ nvm_remote_versions() {
NVM_LS_REMOTE_IOJS_EXIT_CODE=0 NVM_LS_REMOTE_IOJS_EXIT_CODE=0
local NVM_LS_REMOTE_IOJS_OUTPUT local NVM_LS_REMOTE_IOJS_OUTPUT
NVM_LS_REMOTE_IOJS_OUTPUT='' NVM_LS_REMOTE_IOJS_OUTPUT=''
if [ -z "${NVM_LTS-}" ] && ( \ if [ -z "${NVM_LTS-}" ] && {
[ -z "${NVM_FLAVOR-}" ] || [ "${NVM_FLAVOR-}" = "${NVM_IOJS_PREFIX}" ] \ [ -z "${NVM_FLAVOR-}" ] || [ "${NVM_FLAVOR-}" = "${NVM_IOJS_PREFIX}" ];
); then }; then
NVM_LS_REMOTE_IOJS_OUTPUT=$(nvm_ls_remote_iojs "${PATTERN-}") &&: NVM_LS_REMOTE_IOJS_OUTPUT=$(nvm_ls_remote_iojs "${PATTERN-}") &&:
NVM_LS_REMOTE_IOJS_EXIT_CODE=$? NVM_LS_REMOTE_IOJS_EXIT_CODE=$?
fi fi
@ -1148,12 +1148,19 @@ nvm_change_path() {
elif ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/[^/]*${2-}" \ elif ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/[^/]*${2-}" \
&& ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/versions/[^/]*/[^/]*${2-}"; then && ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/versions/[^/]*/[^/]*${2-}"; then
nvm_echo "${3-}${2-}:${1-}" nvm_echo "${3-}${2-}:${1-}"
# if the initial path contains BOTH an nvm path (checked for above) and
# that nvm path is preceded by a system binary path, just prepend the
# supplementary path instead of replacing it.
# https://github.com/creationix/nvm/issues/1652#issuecomment-342571223
elif nvm_echo "${1-}" | nvm_grep -Eq "(^|:)(/usr(/local)?)?${2-}:.*${NVM_DIR}/[^/]*${2-}" \
|| nvm_echo "${1-}" | nvm_grep -Eq "(^|:)(/usr(/local)?)?${2-}:.*${NVM_DIR}/versions/[^/]*/[^/]*${2-}"; then
nvm_echo "${3-}${2-}:${1-}"
# use sed to replace the existing nvm path with the supplementary path. This # use sed to replace the existing nvm path with the supplementary path. This
# preserves the order of the path. # preserves the order of the path.
else else
nvm_echo "${1-}" | command sed \ nvm_echo "${1-}" | command sed \
-e "s#${NVM_DIR}/[^/]*${2-}[^:]*#${3-}${2-}#g" \ -e "s#${NVM_DIR}/[^/]*${2-}[^:]*#${3-}${2-}#" \
-e "s#${NVM_DIR}/versions/[^/]*/[^/]*${2-}[^:]*#${3-}${2-}#g" -e "s#${NVM_DIR}/versions/[^/]*/[^/]*${2-}[^:]*#${3-}${2-}#"
fi fi
} }
@ -1293,14 +1300,14 @@ nvm_list_aliases() {
local ALIAS_NAME local ALIAS_NAME
for ALIAS_NAME in "$(nvm_node_prefix)" "stable" "unstable"; do for ALIAS_NAME in "$(nvm_node_prefix)" "stable" "unstable"; do
{ {
if [ ! -f "${NVM_ALIAS_DIR}/${ALIAS_NAME}" ] && ([ -z "${ALIAS}" ] || [ "${ALIAS_NAME}" = "${ALIAS}" ]); then if [ ! -f "${NVM_ALIAS_DIR}/${ALIAS_NAME}" ] && { [ -z "${ALIAS}" ] || [ "${ALIAS_NAME}" = "${ALIAS}" ]; }; then
NVM_NO_COLORS="${NVM_NO_COLORS-}" NVM_CURRENT="${NVM_CURRENT}" nvm_print_default_alias "${ALIAS_NAME}" NVM_NO_COLORS="${NVM_NO_COLORS-}" NVM_CURRENT="${NVM_CURRENT}" nvm_print_default_alias "${ALIAS_NAME}"
fi fi
} & } &
done done
wait wait
ALIAS_NAME="$(nvm_iojs_prefix)" ALIAS_NAME="$(nvm_iojs_prefix)"
if [ ! -f "${NVM_ALIAS_DIR}/${ALIAS_NAME}" ] && ([ -z "${ALIAS}" ] || [ "${ALIAS_NAME}" = "${ALIAS}" ]); then if [ ! -f "${NVM_ALIAS_DIR}/${ALIAS_NAME}" ] && { [ -z "${ALIAS}" ] || [ "${ALIAS_NAME}" = "${ALIAS}" ]; }; then
NVM_NO_COLORS="${NVM_NO_COLORS-}" NVM_CURRENT="${NVM_CURRENT}" nvm_print_default_alias "${ALIAS_NAME}" NVM_NO_COLORS="${NVM_NO_COLORS-}" NVM_CURRENT="${NVM_CURRENT}" nvm_print_default_alias "${ALIAS_NAME}"
fi fi
) | sort ) | sort
@ -2826,7 +2833,7 @@ nvm_check_file_permissions() {
ZSH_HAS_NONOMATCH_UNSET="$(set +e ; setopt | nvm_grep -q nonomatch ; nvm_echo $?)" ZSH_HAS_NONOMATCH_UNSET="$(set +e ; setopt | nvm_grep -q nonomatch ; nvm_echo $?)"
setopt nonomatch setopt nonomatch
fi fi
for FILE in $1/* $1/.[!.]* $1/..?* ; do for FILE in "$1"/* "$1"/.[!.]* "$1"/..?* ; do
if [ -d "$FILE" ]; then if [ -d "$FILE" ]; then
if ! nvm_check_file_permissions "$FILE"; then if ! nvm_check_file_permissions "$FILE"; then
if [ "${ZSH_HAS_NONOMATCH_UNSET}" -eq 1 ] && nvm_has "setopt"; then if [ "${ZSH_HAS_NONOMATCH_UNSET}" -eq 1 ] && nvm_has "setopt"; then
@ -4132,6 +4139,8 @@ nvm_supports_xz() {
} }
nvm_auto() { nvm_auto() {
local NVM_CURRENT
NVM_CURRENT="$(nvm_ls_current)"
local NVM_MODE local NVM_MODE
NVM_MODE="${1-}" NVM_MODE="${1-}"
local VERSION local VERSION
@ -4143,11 +4152,15 @@ nvm_auto() {
nvm install >/dev/null nvm install >/dev/null
fi fi
elif [ "_$NVM_MODE" = '_use' ]; then elif [ "_$NVM_MODE" = '_use' ]; then
VERSION="$(nvm_resolve_local_alias default 2>/dev/null || nvm_echo)" if [ "_${NVM_CURRENT}" = '_none' ] || [ "_${NVM_CURRENT}" = '_system' ]; then
if [ -n "$VERSION" ]; then VERSION="$(nvm_resolve_local_alias default 2>/dev/null || nvm_echo)"
nvm use --silent "$VERSION" >/dev/null if [ -n "${VERSION}" ]; then
elif nvm_rc_version >/dev/null 2>&1; then nvm use --silent "${VERSION}" >/dev/null
nvm use --silent >/dev/null elif nvm_rc_version >/dev/null 2>&1; then
nvm use --silent >/dev/null
fi
else
nvm use --silent "${NVM_CURRENT}" >/dev/null
fi fi
elif [ "_$NVM_MODE" != '_none' ]; then elif [ "_$NVM_MODE" != '_none' ]; then
nvm_err 'Invalid auto mode supplied.' nvm_err 'Invalid auto mode supplied.'

View File

@ -15,7 +15,8 @@
"test/installation/iojs": "shell=$(basename -- $(ps -o comm= $(ps -o ppid= -p $PPID)) | sed 's/^-//'); make TEST_SUITE=installation_iojs test-$shell", "test/installation/iojs": "shell=$(basename -- $(ps -o comm= $(ps -o ppid= -p $PPID)) | sed 's/^-//'); make TEST_SUITE=installation_iojs test-$shell",
"test/sourcing": "shell=$(basename -- $(ps -o comm= $(ps -o ppid= -p $PPID)) | sed 's/^-//'); make TEST_SUITE=sourcing test-$shell", "test/sourcing": "shell=$(basename -- $(ps -o comm= $(ps -o ppid= -p $PPID)) | sed 's/^-//'); make TEST_SUITE=sourcing test-$shell",
"doctoc": "doctoc --title='## Table of Contents' --github README.md", "doctoc": "doctoc --title='## Table of Contents' --github README.md",
"eclint": "eclint check $(git ls-tree --name-only HEAD | xargs)" "eclint": "eclint check $(git ls-tree --name-only HEAD | xargs)",
"dockerfile_lint": "dockerfile_lint"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -35,6 +36,7 @@
}, },
"homepage": "https://github.com/creationix/nvm", "homepage": "https://github.com/creationix/nvm",
"devDependencies": { "devDependencies": {
"dockerfile_lint": "^0.3.2",
"eclint": "^2.6.0", "eclint": "^2.6.0",
"replace": "^0.3.0", "replace": "^0.3.0",
"semver": "^5.0.1", "semver": "^5.0.1",

View File

@ -14,9 +14,9 @@ cleanup () {
rm -rf "${NVM_DIR}/versions/io.js/v0.2.1" rm -rf "${NVM_DIR}/versions/io.js/v0.2.1"
} }
mkdir "${NVM_DIR}/v0.8.1" make_fake_node v0.8.1
mkdir "${NVM_DIR}/v0.9.1" make_fake_node v0.9.1
mkdir -p "${NVM_DIR}/versions/io.js/v0.2.1" make_fake_iojs v0.2.1
EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)"
STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")"

View File

@ -1,11 +1,14 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh
\. ../../common.sh
for i in $(seq 1 10) for i in $(seq 1 10)
do do
echo 0.0.$i > ../../../alias/test-stable-$i echo 0.0.$i > ../../../alias/test-stable-$i
mkdir -p ../../../v0.0.$i make_fake_node v0.0.$i
echo 0.1.$i > ../../../alias/test-unstable-$i echo 0.1.$i > ../../../alias/test-unstable-$i
mkdir -p ../../../v0.1.$i make_fake_node v0.1.$i
echo 0.2.$i > ../../../alias/test-iojs-$i echo 0.2.$i > ../../../alias/test-iojs-$i
mkdir -p ../../../versions/io.js/v0.2.$i make_fake_iojs v0.2.$i
done done

View File

@ -1,10 +1,11 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir -p "${NVM_DIR}/v0.0.2" make_fake_node v0.0.2
mkdir -p "${NVM_DIR}/v0.0.20" make_fake_node v0.0.20
mkdir -p "${NVM_DIR}/versions/node/v0.12.0" make_fake_node v0.12.0
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }

View File

@ -1,9 +1,10 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.0.2" make_fake_node v0.0.2
mkdir "${NVM_DIR}/v0.0.20" make_fake_node v0.0.20
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }

View File

@ -1,10 +1,11 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.1.3" make_fake_node v0.1.3
mkdir "${NVM_DIR}/v0.2.3" make_fake_node v0.2.3
mkdir "${NVM_DIR}/v0.20.3" make_fake_node v0.20.3
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }

View File

@ -1,11 +1,12 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
mkdir "${NVM_DIR}/v0.2.3" make_fake_node v0.2.3
mkdir "${NVM_DIR}/v0.3.3" make_fake_node v0.3.3
EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)"
STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")"
@ -19,10 +20,10 @@ nvm ls stable | \grep "$STABLE_VERSION" >/dev/null \
nvm ls unstable | \grep "$UNSTABLE_VERSION" >/dev/null \ nvm ls unstable | \grep "$UNSTABLE_VERSION" >/dev/null \
|| die "expected 'nvm ls unstable' to give $UNSTABLE_VERSION, got $(nvm ls unstable)" || die "expected 'nvm ls unstable' to give $UNSTABLE_VERSION, got $(nvm ls unstable)"
mkdir "${NVM_DIR}/v0.1.2" make_fake_node v0.1.4
nvm alias stable 0.1 nvm alias stable 0.1
nvm ls stable | \grep -v "$STABLE_VERSION" >/dev/null \ nvm ls stable | \grep -v "$STABLE_VERSION" >/dev/null \
|| die "'nvm ls stable' contained $STABLE_VERSION instead of v0.1.2" || die "'nvm ls stable' contained $STABLE_VERSION instead of v0.1.4"
nvm ls stable | \grep v0.1.2 >/dev/null \ nvm ls stable | \grep v0.1.4 >/dev/null \
|| die "'nvm ls stable' did not contain v0.1.2" || die "'nvm ls stable' did not contain v0.1.4"

View File

@ -3,13 +3,14 @@
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir -p "${NVM_DIR}/v0.0.1" make_fake_node v0.0.1
mkdir -p "${NVM_DIR}/v0.0.3" make_fake_node v0.0.3
mkdir -p "${NVM_DIR}/v0.0.9" make_fake_node v0.0.9
mkdir -p "${NVM_DIR}/v0.3.1" make_fake_node v0.3.1
mkdir -p "${NVM_DIR}/v0.3.3" make_fake_node v0.3.3
mkdir -p "${NVM_DIR}/v0.3.9" make_fake_node v0.3.9
nvm_has_system_node() { return 0; } nvm_has_system_node() { return 0; }
nvm ls system | grep system 2>&1 > /dev/null nvm ls system | grep system 2>&1 > /dev/null

View File

@ -1,24 +1,27 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.0.1" die () { echo "$@" ; exit 1; }
mkdir "${NVM_DIR}/v0.0.3"
mkdir "${NVM_DIR}/v0.0.9" make_fake_node v0.0.1
mkdir "${NVM_DIR}/v0.3.1" make_fake_node v0.0.3
mkdir "${NVM_DIR}/v0.3.3" make_fake_node v0.0.9
mkdir "${NVM_DIR}/v0.3.9" make_fake_node v0.3.1
mkdir -p "${NVM_DIR}/versions/node/v0.12.87" make_fake_node v0.3.3
mkdir -p "${NVM_DIR}/versions/node/v0.12.9" make_fake_node v0.3.9
mkdir -p "${NVM_DIR}/versions/io.js/v0.1.2" make_fake_node v0.12.87
mkdir -p "${NVM_DIR}/versions/io.js/v0.10.2" make_fake_node v0.12.9
make_fake_iojs v0.1.2
make_fake_iojs v0.10.2
# The result should contain the version numbers. # The result should contain the version numbers.
nvm ls | grep v0.0.1 >/dev/null && nvm ls | grep v0.0.1 >/dev/null || die "v0.0.1 not found in: $(nvm ls)"
nvm ls | grep v0.0.3 >/dev/null && nvm ls | grep v0.0.3 >/dev/null || die "v0.0.3 not found in: $(nvm ls)"
nvm ls | grep v0.0.9 >/dev/null && nvm ls | grep v0.0.9 >/dev/null || die "v0.0.9 not found in: $(nvm ls)"
nvm ls | grep v0.3.1 >/dev/null && nvm ls | grep v0.3.1 >/dev/null || die "v0.3.1 not found in: $(nvm ls)"
nvm ls | grep v0.3.3 >/dev/null && nvm ls | grep v0.3.3 >/dev/null || die "v0.3.3 not found in: $(nvm ls)"
nvm ls | grep v0.3.9 >/dev/null && nvm ls | grep v0.3.9 >/dev/null || die "v0.3.9 not found in: $(nvm ls)"
nvm ls | grep v0.12.87 >/dev/null && nvm ls | grep v0.12.87 >/dev/null || die "v0.12.87 not found in: $(nvm ls)"
nvm ls | grep iojs-v0.1.2 >/dev/null nvm ls | grep iojs-v0.1.2 >/dev/null || die "iojs-v0.1.2 not found in: $(nvm ls)"

View File

@ -1,9 +1,10 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.1.3" make_fake_node v0.1.3
mkdir "${NVM_DIR}/v0.2.3" make_fake_node v0.2.3
[ -z `nvm ls | grep '^ *\.'` ] [ -z `nvm ls | grep '^ *\.'` ]
# The result should contain only the appropriate version numbers. # The result should contain only the appropriate version numbers.

View File

@ -1,10 +1,10 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.1.3" make_fake_node v0.1.3
mkdir "${NVM_DIR}/v0.2.3" make_fake_node v0.2.3
mkdir -p "${NVM_DIR}/versions/node"
[ -z "$(nvm ls | \grep 'versions')" ] [ -z "$(nvm ls | \grep 'versions')" ]
# The result should contain only the appropriate version numbers. # The result should contain only the appropriate version numbers.

View File

@ -3,13 +3,14 @@
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir -p "${NVM_DIR}/v0.0.1" make_fake_node v0.0.1
mkdir -p "${NVM_DIR}/v0.0.3" make_fake_node v0.0.3
mkdir -p "${NVM_DIR}/v0.0.9" make_fake_node v0.0.9
mkdir -p "${NVM_DIR}/v0.3.1" make_fake_node v0.3.1
mkdir -p "${NVM_DIR}/v0.3.3" make_fake_node v0.3.3
mkdir -p "${NVM_DIR}/v0.3.9" make_fake_node v0.3.9
nvm_has_system_node() { return 0; } nvm_has_system_node() { return 0; }
nvm ls | grep system 2>&1 > /dev/null nvm ls | grep system 2>&1 > /dev/null

View File

@ -3,9 +3,10 @@
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir -p "${NVM_DIR}/versions/node/v0.12.1" make_fake_node v0.12.1
mkdir "${NVM_DIR}/v0.1.3" make_fake_node v0.1.3
nvm ls 0.12 | grep v0.12.1 || die '"nvm ls" did not list a version in the versions/ directory' nvm ls 0.12 | grep v0.12.1 || die '"nvm ls" did not list a version in the versions/ directory'
nvm ls 0.1 | grep v0.1.3 || die '"nvm ls" did not list a version not in the versions/ directory' nvm ls 0.1 | grep v0.1.3 || die '"nvm ls" did not list a version not in the versions/ directory'

View File

@ -1,8 +1,9 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.1.2" make_fake_node v0.1.2
nvm ls v0.1 | grep v0.1.2 && nvm ls v0.1 | grep v0.1.2 &&
nvm ls v0.1.2 | grep v0.1.2 && nvm ls v0.1.2 | grep v0.1.2 &&

View File

@ -1,17 +1,18 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.0.1" make_fake_node v0.0.1
mkdir "${NVM_DIR}/v0.0.3" make_fake_node v0.0.3
mkdir "${NVM_DIR}/v0.0.9" make_fake_node v0.0.9
mkdir "${NVM_DIR}/v0.3.1" make_fake_node v0.3.1
mkdir "${NVM_DIR}/v0.3.3" make_fake_node v0.3.3
mkdir "${NVM_DIR}/v0.3.9" make_fake_node v0.3.9
mkdir -p "${NVM_DIR}/versions/node/v0.12.87" make_fake_node v0.12.87
mkdir -p "${NVM_DIR}/versions/node/v0.12.9" make_fake_node v0.12.9
mkdir -p "${NVM_DIR}/versions/io.js/v0.1.2" make_fake_iojs v0.1.2
mkdir -p "${NVM_DIR}/versions/io.js/v0.10.2" make_fake_iojs v0.10.2
set -e set -e

View File

@ -5,6 +5,7 @@ rmdir ../../../v0.0.9 >/dev/null 2>&1
rmdir ../../../v0.0.20 >/dev/null 2>&1 rmdir ../../../v0.0.20 >/dev/null 2>&1
rmdir ../../../v0.1.2 >/dev/null 2>&1 rmdir ../../../v0.1.2 >/dev/null 2>&1
rmdir ../../../v0.1.3 >/dev/null 2>&1 rmdir ../../../v0.1.3 >/dev/null 2>&1
rmdir ../../../v0.1.4 >/dev/null 2>&1
rmdir ../../../v0.2.3 >/dev/null 2>&1 rmdir ../../../v0.2.3 >/dev/null 2>&1
rmdir ../../../v0.3.1 >/dev/null 2>&1 rmdir ../../../v0.3.1 >/dev/null 2>&1
rmdir ../../../v0.3.3 >/dev/null 2>&1 rmdir ../../../v0.3.3 >/dev/null 2>&1

View File

@ -2,13 +2,14 @@
set -ex set -ex
mkdir -p ../../v0.2.3
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
[ `expr $PATH : ".*v0.2.3/.*/bin.*"` = 0 ] || echo "WARNING: Unexpectedly found v0.2.3 already active" >&2
\. ../../nvm.sh \. ../../nvm.sh
\. ../common.sh
make_fake_node v0.2.3
[ `expr $PATH : ".*v0.2.3/.*/bin.*"` = 0 ] || echo "WARNING: Unexpectedly found v0.2.3 already active" >&2
nvm use --delete-prefix v0.2.3 || die "Failed to activate v0.2.3" nvm use --delete-prefix v0.2.3 || die "Failed to activate v0.2.3"
[ `expr "$PATH" : ".*v0.2.3/.*/bin.*"` != 0 ] || die "PATH not set up properly" [ `expr "$PATH" : ".*v0.2.3/.*/bin.*"` != 0 ] || die "PATH not set up properly"

View File

@ -8,8 +8,9 @@ cleanup () {
} }
\. ../../nvm.sh \. ../../nvm.sh
\. ../common.sh
mkdir "${NVM_DIR}/v0.10.4" make_fake_node v0.10.4
nvm deactivate >/dev/null 2>&1 nvm deactivate >/dev/null 2>&1

View File

@ -2,11 +2,11 @@
set -ex set -ex
cd ../.. \. ../../nvm.sh
mkdir v0.0.1 \. ../common.sh
mkdir src/node-v0.0.1
make_fake_node v0.0.1
. ./nvm.sh
nvm uninstall v0.0.1 nvm uninstall v0.0.1
[ ! -d 'v0.0.1' ] && [ ! -d 'src/node-v0.0.1/files' ] [ ! -d 'v0.0.1' ]

View File

@ -2,13 +2,11 @@
set -ex set -ex
cd ../.. \. ../../nvm.sh
mkdir v0.0.1 \. ../common.sh
mkdir src/node-v0.0.1
sudo touch v0.0.1/sudo make_fake_node v0.0.1
sudo touch ""$(nvm_version_path v0.0.1)"/sudo"
. ./nvm.sh
RETURN_MESSAGE="$(nvm uninstall v0.0.1 2>&1 || echo)" RETURN_MESSAGE="$(nvm uninstall v0.0.1 2>&1 || echo)"
CHECK_FOR="Cannot uninstall, incorrect permissions on installation folder" CHECK_FOR="Cannot uninstall, incorrect permissions on installation folder"

View File

@ -4,11 +4,12 @@ set -ex
export NVM_SYMLINK_CURRENT=true export NVM_SYMLINK_CURRENT=true
\. ../../nvm.sh \. ../../nvm.sh
\. ../common.sh
rm -rf "${NVM_DIR}/v0.10.29" rm -rf "${NVM_DIR}/v0.10.29"
mkdir "${NVM_DIR}/v0.10.29" make_fake_node v0.10.29
nvm use --delete-prefix 0.10.29 nvm use --delete-prefix 0.10.29
rmdir "${NVM_DIR}/v0.10.29" rm -rf "${NVM_DIR}/v0.10.29"
if [ ! -L "${NVM_DIR}/current" ];then if [ ! -L "${NVM_DIR}/current" ];then
echo "Expected 'current' symlink to be created!" echo "Expected 'current' symlink to be created!"
@ -23,9 +24,9 @@ if [ "$(basename "${oldLink}")" != 'v0.10.29' ];then
fi fi
rm -rf "${NVM_DIR}/v0.11.13" rm -rf "${NVM_DIR}/v0.11.13"
mkdir "${NVM_DIR}/v0.11.13" make_fake_node v0.11.13
nvm use --delete-prefix 0.11.13 nvm use --delete-prefix 0.11.13
rmdir "${NVM_DIR}/v0.11.13" rm -rf "${NVM_DIR}/v0.11.13"
newLink="$(readlink "${NVM_DIR}/current")" newLink="$(readlink "${NVM_DIR}/current")"

View File

@ -3,6 +3,7 @@
set -ex set -ex
\. ../../nvm.sh \. ../../nvm.sh
\. ../common.sh
TEST_NODE_VERSION="v0.10.29" TEST_NODE_VERSION="v0.10.29"
@ -35,9 +36,9 @@ cleanup() {
} }
runNvmUse() { runNvmUse() {
mkdir "${NVM_DIR}/${TEST_NODE_VERSION}" make_fake_node "$TEST_NODE_VERSION"
nvm use --delete-prefix "${TEST_NODE_VERSION}" > /dev/null 2>&1 nvm use --delete-prefix "${TEST_NODE_VERSION}" > /dev/null 2>&1
rmdir "${NVM_DIR}/${TEST_NODE_VERSION}" rm -rf "${NVM_DIR}/${TEST_NODE_VERSION}"
} }
isCurrentSymlinkPresent() { isCurrentSymlinkPresent() {

View File

@ -41,3 +41,17 @@ NEW_PATH=`nvm_change_path "$EMPTY_PATH" "/bin" "$NVM_DIR/versions/node/v7.1.0"`
NEW_PATH=`nvm_change_path "$EMPTY_PATH" "/bin" "$NVM_DIR/v0.1.2"` NEW_PATH=`nvm_change_path "$EMPTY_PATH" "/bin" "$NVM_DIR/v0.1.2"`
[ "$NEW_PATH" = "$NVM_DIR/v0.1.2/bin" ] || die "Not correctly prepended: $NEW_PATH " [ "$NEW_PATH" = "$NVM_DIR/v0.1.2/bin" ] || die "Not correctly prepended: $NEW_PATH "
# https://github.com/creationix/nvm/issues/1652#issuecomment-342571223
MAC_OS_NESTED_SESSION_PATH=/usr/bin:/usr/local/bin:$NVM_DIR/versions/node/v4.5.0/bin
# New version dir
NEW_PATH=`nvm_change_path "$MAC_OS_NESTED_SESSION_PATH" "/bin" "$NVM_DIR/versions/node/v7.1.0"`
[ "$NEW_PATH" = "$NVM_DIR/versions/node/v7.1.0/bin:/usr/bin:/usr/local/bin:$NVM_DIR/versions/node/v4.5.0/bin" ] || die "Not correctly changed: $NEW_PATH "
# Old version dir
NEW_PATH=`nvm_change_path "$MAC_OS_NESTED_SESSION_PATH" "/bin" "$NVM_DIR/v0.1.2"`
[ "$NEW_PATH" = "$NVM_DIR/v0.1.2/bin:/usr/bin:/usr/local/bin:$NVM_DIR/versions/node/v4.5.0/bin" ] || die "Not correctly changed: $NEW_PATH "

View File

@ -7,8 +7,9 @@ cleanup () {
} }
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir -p "$(nvm_version_path v0.1.2)" make_fake_node v0.1.2
OUTPUT="$(nvm_ensure_version_installed foo 2>&1)" OUTPUT="$(nvm_ensure_version_installed foo 2>&1)"
EXIT_CODE=$? EXIT_CODE=$?

View File

@ -1,17 +1,14 @@
#!/bin/sh #!/bin/sh
cleanup () { cleanup () {
rm "${NVM_DIR}/versions/io.js/v0.1.2/node" rm -rf "${NVM_DIR}/versions/io.js/v0.1.2"
rm "${NVM_DIR}/versions/io.js/v0.1.2/iojs"
rmdir "${NVM_DIR}/versions/io.js/v0.1.2"
} }
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/versions/io.js/v0.1.2" make_fake_iojs v0.1.2
touch "${NVM_DIR}/versions/io.js/v0.1.2/node"
touch "${NVM_DIR}/versions/io.js/v0.1.2/iojs"
nvm use iojs-v0.1.2 nvm use iojs-v0.1.2

View File

@ -1,14 +1,14 @@
#!/bin/sh #!/bin/sh
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
cleanup () { cleanup () {
rm -rf "${NVM_DIR}/v0.1.2/node" rm -rf "${NVM_DIR}/v0.1.2"
} }
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
mkdir "${NVM_DIR}/v0.1.2" make_fake_node v0.1.2
touch "${NVM_DIR}/v0.1.2/node"
nvm use 0.1.2 nvm use 0.1.2

View File

@ -14,13 +14,14 @@ cleanup() {
} }
\. ../../../nvm.sh \. ../../../nvm.sh
\. ../../common.sh
mkdir "${NVM_DIR}/v0.2.3" make_fake_node v0.2.3
mkdir "${NVM_DIR}/v0.3.4" make_fake_node v0.3.4
mkdir "${NVM_DIR}/v0.4.6" make_fake_node v0.4.6
mkdir "${NVM_DIR}/v0.5.7" make_fake_node v0.5.7
mkdir "${NVM_DIR}/v0.7.7" make_fake_node v0.7.7
mkdir -p "${NVM_DIR}/versions/io.js/v0.98.0" make_fake_iojs v0.98.0
LATEST_STABLE="$(nvm_print_implicit_alias local stable)" 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_STABLE" = "_0.4" ] || die "local stable is not latest even minor: expected 0.4, got $LATEST_STABLE"
@ -35,8 +36,9 @@ LATEST_IOJS="$(nvm_print_implicit_alias local iojs)"
[ "_$LATEST_IOJS" = "_iojs-v0.98" ] || die "local iojs is not latest iojs: expected iojs-v0.98, got $LATEST_IOJS" [ "_$LATEST_IOJS" = "_iojs-v0.98" ] || die "local iojs is not latest iojs: expected iojs-v0.98, got $LATEST_IOJS"
## node post v1.0/io.js merger ## ## node post v1.0/io.js merger ##
mkdir -p "${NVM_DIR}/versions/node/v1.0.0" make_fake_node v1.0.0
mkdir -p "${NVM_DIR}/versions/node/v1.1.0" make_fake_node v1.1.0
LATEST_STABLE="$(nvm_print_implicit_alias local stable)" LATEST_STABLE="$(nvm_print_implicit_alias local stable)"
[ "_$LATEST_STABLE" = "_1.1" ] || die "local stable when post-v1.0 exists is not latest: expected 1.1, got $LATEST_STABLE" [ "_$LATEST_STABLE" = "_1.1" ] || die "local stable when post-v1.0 exists is not latest: expected 1.1, got $LATEST_STABLE"

View File

@ -28,6 +28,12 @@ setup
# Confirm profile detection via $SHELL works and that $PROFILE overrides profile detection # Confirm profile detection via $SHELL works and that $PROFILE overrides profile detection
# #
# setting $PROFILE to /dev/null should return no detected 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 # .bashrc should be detected for bash
NVM_DETECT_PROFILE="$(BASH_VERSION="1"; unset PROFILE; nvm_detect_profile)" NVM_DETECT_PROFILE="$(BASH_VERSION="1"; unset PROFILE; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then

View File

@ -16,9 +16,10 @@ install_dir=$(nvm_install_dir)
[ "_$install_dir" = "_$NVM_DIR" ] || die "nvm_install_dir should use \$NVM_DIR if it exists. Current output: $install_dir" [ "_$install_dir" = "_$NVM_DIR" ] || die "nvm_install_dir should use \$NVM_DIR if it exists. Current output: $install_dir"
unset NVM_DIR unset NVM_DIR
# NVM_DIR is not set # NVM_DIR is not set
install_dir=$(nvm_install_dir) install_dir=$(nvm_install_dir)
[ "_$install_dir" = "_$HOME/.nvm" ] || die "nvm_install_dir should default to \$HOME/.nvm. Current output: $install_dir" fallback_dir=""
[ ! -z "$XDG_CONFIG_HOME" ] && fallback_dir="$XDG_CONFIG_HOME/nvm" || fallback_dir="$HOME/.nvm"
[ "_$install_dir" = "_$fallback_dir" ] || die "nvm_install_dir should default to \$XDG_CONFIG_DIR/.nvm. Current output: $install_dir"
cleanup cleanup

View File

@ -19,6 +19,12 @@ fail() {
! nvm_is_version_installed "${VERSION}" || nvm uninstall "${VERSION}" || die 'uninstall failed' ! nvm_is_version_installed "${VERSION}" || nvm uninstall "${VERSION}" || die 'uninstall failed'
# an existing but empty VERSION_PATH directory should not be enough to satisfy nvm_is_version_installed
rm -rf "${VERSION_PATH}"
mkdir -p "${VERSION_PATH}"
nvm_is_version_installed "${VERSION}" && die 'nvm_is_version_installed check not strict enough'
rmdir "${VERSION_PATH}"
OUTPUT="$(NVM_INSTALL_THIRD_PARTY_HOOK=succeed nvm install "${VERSION}")" OUTPUT="$(NVM_INSTALL_THIRD_PARTY_HOOK=succeed nvm install "${VERSION}")"
USE_OUTPUT="$(nvm use "${VERSION}")" USE_OUTPUT="$(nvm use "${VERSION}")"
EXPECTED_OUTPUT="${VERSION} node std binary ${VERSION_PATH} EXPECTED_OUTPUT="${VERSION} node std binary ${VERSION_PATH}

View File

@ -26,6 +26,8 @@ nvm install-latest-npm || die 'nvm install-latest-npm failed: 3'
NPM_VERSION="$(npm --version)" NPM_VERSION="$(npm --version)"
[ "${NPM_VERSION}" = '4.6.1' ] || die "io.js v1.x updates to ${NPM_VERSION}; expected v4.6.1" [ "${NPM_VERSION}" = '4.6.1' ] || die "io.js v1.x updates to ${NPM_VERSION}; expected v4.6.1"
export NPM_CONFIG_STRICT_SSL=false # the npm registry tightened up their SSL certs
nvm deactivate >/dev/null 2>&1 || die 'unable to deactivate: 4' nvm deactivate >/dev/null 2>&1 || die 'unable to deactivate: 4'
nvm install 0.8.27 >/dev/null 2>&1 || die 'install v0.8 failed' nvm install 0.8.27 >/dev/null 2>&1 || die 'install v0.8 failed'
nvm install-latest-npm || die 'nvm install-latest-npm failed: 4' nvm install-latest-npm || die 'nvm install-latest-npm failed: 4'
@ -35,7 +37,6 @@ NPM_VERSION="$(npm --version)"
## Commented to work around travis-ci breaking 0,6 installs ## Commented to work around travis-ci breaking 0,6 installs
# nvm deactivate >/dev/null 2>&1 || die 'unable to deactivate: 5' # nvm deactivate >/dev/null 2>&1 || die 'unable to deactivate: 5'
# nvm install 0.6.21 >/dev/null 2>&1 || die 'install v0.6 failed' # nvm install 0.6.21 >/dev/null 2>&1 || die 'install v0.6 failed'
# export NPM_CONFIG_STRICT_SSL=false # npm 1 on travis can't handle SSL to npm
# nvm install-latest-npm || die 'nvm install-latest-npm failed: 5' # nvm install-latest-npm || die 'nvm install-latest-npm failed: 5'
# NPM_VERSION="$(npm --version)" # NPM_VERSION="$(npm --version)"
# [ "${NPM_VERSION}" = '1.3.26' ] || die "node 0.6.21 updates to ${NPM_VERSION}; expected v1.3.26" # [ "${NPM_VERSION}" = '1.3.26' ] || die "node 0.6.21 updates to ${NPM_VERSION}; expected v1.3.26"

View File

@ -5,29 +5,29 @@ die () { echo "$@" ; exit 1; }
\. ../../nvm.sh \. ../../nvm.sh
# Remove the stuff we're clobbering. # Remove the stuff we're clobbering.
[ -e "${NVM_DIR}/v0.9.7" ] && rm -R "${NVM_DIR}/v0.9.7" [ -e "${NVM_DIR}/versions/node/v9.7.0" ] && rm -R "${NVM_DIR}/versions/node/v9.7.0"
[ -e "${NVM_DIR}/v0.9.12" ] && rm -R "${NVM_DIR}/v0.9.12" [ -e "${NVM_DIR}/versions/node/v9.10.0" ] && rm -R "${NVM_DIR}/versions/node/v9.10.0"
# Install from binary # Install from binary
nvm install 0.9.7 nvm install 9.7.0
# Check # Check
[ -d "${NVM_DIR}/v0.9.7" ] || die "nvm install 0.9.7 didn't install" [ -d "${NVM_DIR}/versions/node/v9.7.0" ] || die "nvm install 9.7.0 didn't install"
nvm use 0.9.7 nvm use 9.7.0
node --version | grep v0.9.7 > /dev/null || die "nvm use 0.9.7 failed" node --version | grep v9.7.0 > /dev/null || die "nvm use 9.7.0 failed"
npm install -g object-is@0.0.0 || die "npm install -g object-is failed" npm install -g object-is@0.0.0 || die "npm install -g object-is failed"
npm list --global | grep object-is > /dev/null || die "object-is isn't installed" npm list --global | grep object-is > /dev/null || die "object-is 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 ls 9 | grep v9.7.0 > /dev/null || die "nvm ls 9 didn't show v9.7.0"
nvm install 0.9.12 --reinstall-packages-from=0.9 || die "nvm install 0.9.12 --reinstall-packages-from=0.9 failed" nvm install 9.10.0 --reinstall-packages-from=9 || die "nvm install 9.10.0 --reinstall-packages-from=9 failed"
[ -d "${NVM_DIR}/v0.9.12" ] || die "nvm install 0.9.12 didn't install" [ -d "${NVM_DIR}/versions/node/v9.10.0" ] || die "nvm install 9.10.0 didn't install"
nvm use 0.9 nvm use 9
node --version | grep v0.9.12 > /dev/null || die "nvm ls 0.9 didn't use v0.9.12" node --version | grep v9.10.0 > /dev/null || die "nvm ls 9 didn't use v9.10.0"
npm list --global | grep object-is > /dev/null || die "object-is isn't installed" npm list --global | grep object-is > /dev/null || die "object-is isn't installed"

View File

@ -4,6 +4,10 @@
nvm deactivate nvm deactivate
nvm uninstall v0.10.7 nvm uninstall v0.10.7
nvm uninstall v4.2.2 nvm uninstall v4.2.2
nvm uninstall v0.9.7
nvm uninstall v9.7.0
nvm uninstall v0.9.12
nvm uninstall v9.10.0
if [ -f ".nvmrc" ]; then if [ -f ".nvmrc" ]; then
rm .nvmrc rm .nvmrc

View File

@ -10,7 +10,7 @@ nvm exec 0.10.29 npm install -g npm@~1.4.11 && nvm install-latest-npm # this is
nvm use 0.10.28 nvm use 0.10.28
(cd test-npmlink && npm link) (cd test-npmlink && npm link)
EXPECTED_PACKAGES="autoprefixer bower david eslint grunt-cli grunth-cli http-server jshint marked node-gyp npmlist recursive-blame spawn-sync test-npmlink uglify-js" EXPECTED_PACKAGES="autoprefixer bower david grunt-cli grunth-cli http-server jshint marked node-gyp npmlist recursive-blame spawn-sync test-npmlink uglify-js"
echo "$EXPECTED_PACKAGES yo@1" | sed -e 's/test-npmlink //' | xargs npm install -g --quiet echo "$EXPECTED_PACKAGES yo@1" | sed -e 's/test-npmlink //' | xargs npm install -g --quiet

View File

@ -0,0 +1,20 @@
#!/bin/sh
die () { echo "$@" ; exit 1; }
echo '0.10.1' > ../../alias/default || die "couldn't create default alias"
\. ../../nvm.sh || die 'sourcing returned nonzero exit code'
NVM_TARGET=0.10.3
NVM_DEFAULT="$(nvm_resolve_local_alias default)"
[ "_$NVM_DEFAULT" != "_$NVM_TARGET" ] || die "default $NVM_DEFAULT is the same as target $NVM_TARGET"
nvm use $NVM_TARGET || die "nvm use $NVM_TARGET failed"
\. ../../nvm.sh || die 'sourcing returned nonzero exit code'
NVM_CURRENT="$(nvm current)"
[ "_${NVM_CURRENT#v}" = "_$NVM_TARGET" ] || die "node version not retained after sourcing"

View File

@ -2,13 +2,24 @@
die () { echo "$@" ; exit 1; } die () { echo "$@" ; exit 1; }
echo '0.10.1' > ../../alias/default || die 'creation of default alias failed'
\. ../../nvm.sh || die 'sourcing returned nonzero exit code'
\. ../common.sh \. ../common.sh
# We need to unload nvm again first, as by the time this test is run,
# despite being unloaded in setup, the inherited PATH still contains
# an nvm-installed node version. We have to reset NVM_DIR after the unload.
\. ../../nvm.sh || die 'sourcing returned nonzero exit code'
NVM_DIR_CACHED="$NVM_DIR"
nvm unload || die 'unloading returned nonzero exit code'
NVM_DIR="$NVM_DIR_CACHED"
echo '0.10.1' > ../../alias/default || die 'creation of default alias failed'
# Now to begin the real test
\. ../../nvm.sh || die 'sourcing returned nonzero exit code'
NVM_LS_CURRENT_NOT_GREPPED="$(nvm ls current | strip_colors)"
NVM_LS_CURRENT="$(nvm ls current | strip_colors | \grep -o v0.10.1)" NVM_LS_CURRENT="$(nvm ls current | strip_colors | \grep -o v0.10.1)"
[ "_$NVM_LS_CURRENT" = '_v0.10.1' ] || die "'nvm ls current' did not return '-> v0.10.1', got '$NVM_LS_CURRENT'" [ "_$NVM_LS_CURRENT" = '_v0.10.1' ] || die "'nvm ls current' did not return '-> v0.10.1', got '$NVM_LS_CURRENT_NOT_GREPPED'"
# NVM_LS_CURRENT_COLORED="$(nvm ls current | sed -n l)" # NVM_LS_CURRENT_COLORED="$(nvm ls current | sed -n l)"

View File

@ -9,5 +9,6 @@ rm -rf ../../v0.9.12
\. ../../nvm.sh \. ../../nvm.sh
nvm install 0.10.1 || echo >&2 'nvm install 0.10.1 failed' nvm install 0.10.1 || echo >&2 'nvm install 0.10.1 failed'
nvm install 0.10.3 || echo >&2 'nvm install 0.10.3 failed'
nvm unalias default || 'removing default alias failed' nvm unalias default || 'removing default alias failed'
nvm unload || echo >&2 'nvm unload failed' nvm unload || echo >&2 'nvm unload failed'

View File

@ -3,4 +3,5 @@
rm -rf ../../alias rm -rf ../../alias
rm -rf ../../v0.10.1 rm -rf ../../v0.10.1
rm -rf ../../v0.10.2 rm -rf ../../v0.10.2
rm -rf ../../v0.10.3
rm -f ../../.nvmrc rm -f ../../.nvmrc