Skip to content

Commit aced9a4

Browse files
committed
wip
1 parent 0ce8f5a commit aced9a4

10 files changed

+224
-145
lines changed

nvm.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2199,7 +2199,7 @@ nvm_install_binary_extract() {
21992199
command mkdir -p "${VERSION_PATH}" || return 1
22002200

22012201
if [ "${NVM_OS}" = 'win' ]; then
2202-
command mv "${TMPDIR}/"*/* "${VERSION_PATH}" || return 1
2202+
command mv "${TMPDIR}/"*/* "${VERSION_PATH}/" || return 1
22032203
command chmod +x "${VERSION_PATH}"/node.exe || return 1
22042204
command chmod +x "${VERSION_PATH}"/npm || return 1
22052205
command chmod +x "${VERSION_PATH}"/npx 2>/dev/null
@@ -2922,11 +2922,11 @@ nvm_is_natural_num() {
29222922

29232923
nvm_write_nvmrc() {
29242924
local VERSION_STRING
2925-
VERSION_STRING=$(nvm_version "${1-$VERSION_STRING}")
2926-
if [ "$VERSION_STRING" = '' ] || [ "$VERSION_STRING" = 'N/A' ]; then
2925+
VERSION_STRING=$(nvm_version "${1-}")
2926+
if [ "${VERSION_STRING}" = '' ] || [ "${VERSION_STRING}" = 'N/A' ]; then
29272927
return 1
29282928
fi
2929-
echo "$VERSION_STRING" | tee "$PWD"/.nvmrc > /dev/null || {
2929+
echo "${VERSION_STRING}" | tee "$PWD"/.nvmrc > /dev/null || {
29302930
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
29312931
nvm_err "Warning: Unable to write version number ($VERSION_STRING) to .nvmrc"
29322932
fi

test/fast/Unit tests/Running 'nvm install --save' works as expected'

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,58 @@
44

55
set -e
66

7-
TEST_VERSION="v0.2.4"
7+
TEST_VERSION='v0.2.4'
88

99
if [ -f .nvmrc ]; then mv .nvmrc .nvmrc.orig; fi
1010

11-
cleanup () {
11+
cleanup() {
1212
nvm cache clear
1313
nvm deactivate
1414
nvm unalias default
15-
rm -rf ${NVM_DIR}/v* .nvmrc
15+
rm -rf "${NVM_DIR}/v0.2.4" .nvmrc
1616
if [ -f .nvmrc.orig ]; then mv .nvmrc.orig .nvmrc; fi
1717
unset -f nvm_ls_remote nvm_ls_remote_iojs
1818
}
1919

20-
die () {
20+
die() {
2121
echo "$@"
2222
cleanup
2323
exit 1
2424
}
2525

26-
REMOTE="$PWD/mocks/nvm_ls_remote.txt"
26+
REMOTE="${PWD}/mocks/nvm_ls_remote.txt"
2727
nvm_ls_remote() {
28-
cat "$REMOTE"
28+
if [ -n "${PATTERN}" ]; then
29+
cat "${REMOTE}" | \grep "${PATTERN}"
30+
else
31+
cat "${REMOTE}"
32+
fi
2933
}
3034
REMOTE_IOJS="$PWD/mocks/nvm_ls_remote_iojs.txt"
3135
nvm_ls_remote_iojs() {
32-
cat "$REMOTE_IOJS"
36+
local PATTERN
37+
PATTERN="${1-}"
38+
if [ -n "${PATTERN}" ]; then
39+
cat "${REMOTE_IOJS}" | \grep "${PATTERN}"
40+
else
41+
cat "${REMOTE_IOJS}"
42+
fi
3343
}
3444

35-
make_fake_node "$TEST_VERSION"
45+
make_fake_node "${TEST_VERSION}"
3646

37-
nvm install --save "$TEST_VERSION" || die "\`nvm install --save $TEST_VERSION\` failed"
47+
nvm install -w "${TEST_VERSION}" || die "\`nvm install -w ${TEST_VERSION}\` failed"
3848
OUTPUT="$(cat .nvmrc)"
3949

40-
nvm_is_valid_version "$(cat .nvmrc)" \
41-
|| die "\`nvm install --save $TEST_VERSION\`+ \`cat .nvmrc\` outputted invalid version: got '${OUTPUT}'"
50+
nvm_is_valid_version "${OUTPUT}" \
51+
|| die "\`nvm install -w ${TEST_VERSION}\`+ \`cat .nvmrc\` outputted invalid version: got '${OUTPUT}'"
52+
53+
rm .nvmrc || die 'removing of .nvmrc failed'
54+
55+
nvm install --save "${TEST_VERSION}" || die "\`nvm install --save ${TEST_VERSION}\` failed"
56+
OUTPUT="$(cat .nvmrc)"
57+
58+
nvm_is_valid_version "${OUTPUT}" \
59+
|| die "\`nvm install --save ${TEST_VERSION}\`+ \`cat .nvmrc\` outputted invalid version: got '${OUTPUT}'"
4260

4361
cleanup
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/bin/sh
2+
\. ../../../nvm.sh
3+
\. ../../common.sh
4+
5+
set -e
6+
7+
TEST_VERSION='v0.2.4'
8+
9+
if [ -f .nvmrc ]; then mv .nvmrc .nvmrc.orig; fi
10+
11+
cleanup() {
12+
nvm cache clear
13+
nvm deactivate
14+
nvm unalias default
15+
rm -rf "${NVM_DIR}/v0.2.4" .nvmrc
16+
if [ -f .nvmrc.orig ]; then mv .nvmrc.orig .nvmrc; fi
17+
unset -f nvm_ls_remote nvm_ls_remote_iojs
18+
}
19+
20+
die() {
21+
echo "$@"
22+
cleanup
23+
exit 1
24+
}
25+
26+
REMOTE="${PWD}/mocks/nvm_ls_remote.txt"
27+
nvm_ls_remote() {
28+
if [ -n "${PATTERN}" ]; then
29+
cat "${REMOTE}" | \grep "${PATTERN}"
30+
else
31+
cat "${REMOTE}"
32+
fi
33+
}
34+
REMOTE_IOJS="$PWD/mocks/nvm_ls_remote_iojs.txt"
35+
nvm_ls_remote_iojs() {
36+
local PATTERN
37+
PATTERN="${1-}"
38+
if [ -n "${PATTERN}" ]; then
39+
cat "${REMOTE_IOJS}" | \grep "${PATTERN}"
40+
else
41+
cat "${REMOTE_IOJS}"
42+
fi
43+
}
44+
45+
make_fake_node "${TEST_VERSION}"
46+
47+
nvm use -w "${TEST_VERSION}" || die "\`nvm install -w ${TEST_VERSION}\` failed"
48+
OUTPUT="$(cat .nvmrc)"
49+
50+
nvm_is_valid_version "${OUTPUT}" \
51+
|| die "\`nvm install -w ${TEST_VERSION}\`+ \`cat .nvmrc\` outputted invalid version: got '${OUTPUT}'"
52+
53+
rm .nvmrc || die 'removing of .nvmrc failed'
54+
55+
nvm use --save "${TEST_VERSION}" || die "\`nvm install --save ${TEST_VERSION}\` failed"
56+
OUTPUT="$(cat .nvmrc)"
57+
58+
nvm_is_valid_version "${OUTPUT}" \
59+
|| die "\`nvm install --save ${TEST_VERSION}\`+ \`cat .nvmrc\` outputted invalid version: got '${OUTPUT}'"
60+
61+
cleanup

test/fast/Unit tests/Running 'nvm use --silent --save' doesn't output anything

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ cleanup () {
1212
nvm cache clear
1313
nvm deactivate
1414
nvm unalias default
15-
rm -rf ${NVM_DIR}/v* .nvmrc
15+
rm -rf "${NVM_DIR}/${TEST_VERSION:?}" .nvmrc
1616
if [ -f .nvmrc.orig ]; then mv .nvmrc.orig .nvmrc; fi
1717
unset -f nvm_ls_remote nvm_ls_remote_iojs
1818
}
@@ -23,21 +23,29 @@ die () {
2323
exit 1
2424
}
2525

26-
REMOTE="$PWD/mocks/nvm_ls_remote.txt"
26+
REMOTE="${PWD}/mocks/nvm_ls_remote.txt"
2727
nvm_ls_remote() {
28-
cat "$REMOTE"
28+
cat "${REMOTE}"
2929
}
30-
REMOTE_IOJS="$PWD/mocks/nvm_ls_remote_iojs.txt"
30+
REMOTE_IOJS="${PWD}/mocks/nvm_ls_remote_iojs.txt"
3131
nvm_ls_remote_iojs() {
32-
cat "$REMOTE_IOJS"
32+
cat "${REMOTE_IOJS}"
3333
}
3434

35-
make_fake_node "$TEST_VERSION"
35+
make_fake_node "${TEST_VERSION}"
3636

37-
OUTPUT=$(nvm use --save --silent "$TEST_VERSION" || die "\`nvm use --save --silent $TEST_VERSION\` failed")
38-
EXPECTED_OUTPUT=""
37+
OUTPUT=$(nvm use --save --silent "${TEST_VERSION}" || die "\`nvm use --save --silent ${TEST_VERSION}\` failed")
38+
EXPECTED_OUTPUT=''
3939

40-
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] \
41-
|| die "\`nvm use --save --silent $TEST_VERSION\` output was not silenced to '$EXPECTED_OUTPUT'; got '$OUTPUT'"
40+
[ "_${OUTPUT}" = "_${EXPECTED_OUTPUT}" ] \
41+
|| die "\`nvm use --save --silent ${TEST_VERSION}\` output was not silenced to '${EXPECTED_OUTPUT}'; got '${OUTPUT}'"
42+
43+
rm .nvmrc || die 'removing of .nvmrc failed'
44+
45+
OUTPUT=$(nvm use -w --silent "${TEST_VERSION}" || die "\`nvm use -w --silent ${TEST_VERSION}\` failed")
46+
EXPECTED_OUTPUT=''
47+
48+
[ "_${OUTPUT}" = "_${EXPECTED_OUTPUT}" ] \
49+
|| die "\`nvm use -w --silent ${TEST_VERSION}\` output was not silenced to '${EXPECTED_OUTPUT}'; got '${OUTPUT}'"
4250

4351
cleanup

test/fast/Unit tests/Running 'nvm use -w' works as expected'

Lines changed: 0 additions & 62 deletions
This file was deleted.

test/fast/Unit tests/nvm ls-remote

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,27 @@ nvm deactivate 2>/dev/null || die 'unable to deactivate'
2222

2323
\. ../../common.sh
2424

25-
MOCKS_DIR="$PWD/mocks"
25+
MOCKS_DIR="${PWD}/mocks"
2626

2727
nvm_download() {
2828
if [ "$*" = "-L -s $(nvm_get_mirror node std)/index.tab -o -" ]; then
29-
cat "$MOCKS_DIR/nodejs.org-dist-index.tab"
29+
cat "${MOCKS_DIR}/nodejs.org-dist-index.tab"
3030
return
3131
fi
3232
return 42
3333
}
3434

3535
EXPECTED_OUTPUT_PATH="${MOCKS_DIR}/nvm ls-remote lts.txt"
3636
OUTPUT="$(nvm ls-remote --lts | sed 's/[ \t]*$//')"
37-
EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH" | sed 's/[ \t]*$//' )"
38-
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm ls-remote --lts did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")"
37+
EXPECTED_OUTPUT="$(cat "${EXPECTED_OUTPUT_PATH}" | sed 's/[ \t]*$//' )"
38+
[ "_${OUTPUT}" = "_${EXPECTED_OUTPUT}" ] || die "nvm ls-remote --lts did not output expected sorted versions; got >${OUTPUT}< expected >${EXPECTED_OUTPUT}<"
3939

4040
EXPECTED_OUTPUT_PATH="${MOCKS_DIR}/nvm ls-remote lts.txt"
4141
OUTPUT="$(nvm ls-remote "lts/*" | sed 's/[ \t]*$//')"
42-
EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH" | sed 's/[ \t]*$//' )"
43-
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm ls-remote lts/* did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")"
42+
EXPECTED_OUTPUT="$(cat "${EXPECTED_OUTPUT_PATH}" | sed 's/[ \t]*$//' )"
43+
[ "_${OUTPUT}" = "_${EXPECTED_OUTPUT}" ] || die "nvm ls-remote lts/* did not output expected sorted versions; got >${OUTPUT}< expected >${EXPECTED_OUTPUT}<"
4444

45-
MOCKS_DIR="$PWD/mocks"
45+
MOCKS_DIR="${PWD}/mocks"
4646
LTS_NAMES_PATH="${MOCKS_DIR}/LTS_names.txt"
4747
LTS_LIST="$(cat "${LTS_NAMES_PATH}" | tail -n +2)"
4848

@@ -56,18 +56,18 @@ printf '%s\n' "${LTS_LIST}" | while IFS= read -r LTS; do
5656
INDEX=$(($INDEX + 1))
5757
done
5858

59-
REMOTE="$PWD/mocks/nvm_ls_remote.txt"
59+
REMOTE="${PWD}/mocks/nvm_ls_remote.txt"
6060
nvm_ls_remote() {
61-
cat "$REMOTE"
61+
cat "${REMOTE}"
6262
}
63-
REMOTE_IOJS="$PWD/mocks/nvm_ls_remote_iojs.txt"
63+
REMOTE_IOJS="${PWD}/mocks/nvm_ls_remote_iojs.txt"
6464
nvm_ls_remote_iojs() {
65-
cat "$REMOTE_IOJS"
65+
cat "${REMOTE_IOJS}"
6666
}
6767

6868
EXPECTED_OUTPUT_PATH="${MOCKS_DIR}/nvm ls-remote.txt"
6969
OUTPUT="$(nvm ls-remote | sed 's/[ \t]*$//')"
70-
EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH" | sed 's/[ \t]*$//' )"
71-
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm ls-remote did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")"
70+
EXPECTED_OUTPUT="$(cat "${EXPECTED_OUTPUT_PATH}" | sed 's/[ \t]*$//' )"
71+
[ "_${OUTPUT}" = "_${EXPECTED_OUTPUT}" ] || die "bare nvm ls-remote did not output expected sorted versions; got >${OUTPUT}< expected >${EXPECTED_OUTPUT}<"
7272

7373
cleanup

test/fast/Unit tests/nvm_download

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@ nvm_download "https://raw.githubusercontent.com/nvm-sh/nvm/HEAD/install.sh" >/de
1717
! nvm_download "https://raw.githubusercontent.com/nvm-sh/nvm/HEAD/wrong_install.sh" >/dev/null || die "nvm_download should fail to download no existing file"
1818

1919
# nvm_download should pass when calling with auth header
20-
docker pull kennethreitz/httpbin && docker run --shell=bash -d --name httpbin -p 80:80 kennethreitz/httpbin
20+
docker pull kennethreitz/httpbin && SHELL=bash docker run -d --name httpbin -p 80:80 kennethreitz/httpbin
2121
sleep 1 # wait for httpbin to start
2222
NVM_AUTH_HEADER="Bearer test-token" nvm_download "http://127.0.0.1/bearer" > /dev/null || die 'nvm_download with auth header should send correctly'
2323

2424
# nvm_download should fail when calling without auth header
2525
nvm_download "http://127.0.0.1/bearer" > /dev/null && die 'nvm_download with no auth header should not send the header and should fail'
26-
docker stop httpbin && docker rm httpbin
2726

2827
# ensure quoted extra args remain quoted
2928
nvm_download "https://raw.githubusercontent.com/nvm-sh/nvm/HEAD/install.sh" -o "; die quoted-command-not-quoted" || die 'command failed'

0 commit comments

Comments
 (0)