Skip to content

Commit 50c8fa3

Browse files
committed
add test for NVM_MIN_VER support
show only versions newer than NVM_MIN_VER if set
1 parent 80c00ad commit 50c8fa3

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed
+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
#!/bin/sh
2+
3+
# shellcheck disable=SC2317
4+
5+
die () { echo "$@" ; cleanup ; exit 1; }
6+
7+
cleanup() {
8+
unset -f nvm_remote_versions nvm_ls nvm_ls_current nvm_remote_versions
9+
if [ -n "$TEMP_NVM_MIN_VER" ]; then
10+
export NVM_MIN_VER="$TEMP_NVM_MIN_VER"
11+
fi
12+
}
13+
14+
\. ../../../nvm.sh
15+
16+
17+
if [ -n "$NVM_MIN_VER" ]; then
18+
TEMP_NVM_MIN_VER="$NVM_MIN_VER"
19+
unset NVM_MIN_VER
20+
fi
21+
22+
# mock currently installed versions
23+
nvm_ls() {
24+
echo "v16.20.2
25+
v18.20.3
26+
system
27+
"
28+
}
29+
30+
# mock currently active version
31+
nvm_ls_current() {
32+
echo "v18.20.3"
33+
}
34+
35+
nvm_remote_versions() {
36+
echo "v16.0.0
37+
v16.20.2 Gallium *
38+
v17.0.0
39+
v17.9.1
40+
v18.0.0
41+
v18.1.0
42+
v18.20.2 Hydrogen
43+
v18.20.3 Hydrogen *
44+
v19.0.0
45+
v19.9.0
46+
v20.0.0
47+
v20.8.1
48+
v20.9.0 Iron *
49+
v21.0.0
50+
v21.1.0
51+
"
52+
}
53+
54+
55+
# nvm_print_versions should print all versions from nvm_remote_versions
56+
OUTPUT="$(NVM_NO_COLORS=1 nvm_print_versions "$(nvm_remote_versions)")"
57+
EXPECTED_OUTPUT=" v16.0.0
58+
v16.20.2 * (Latest LTS: Gallium)
59+
v17.0.0
60+
v17.9.1
61+
v18.0.0
62+
v18.1.0
63+
v18.20.2 (LTS: Hydrogen)
64+
-> v18.20.3 * (Latest LTS: Hydrogen)
65+
v19.0.0
66+
v19.9.0
67+
v20.0.0
68+
v20.8.1
69+
v20.9.0 (Latest LTS: Iron)
70+
v21.0.0
71+
v21.1.0"
72+
73+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_print_versions did not output all expected versions; got $OUTPUT"
74+
75+
76+
# versions lower than 18 should be filtered out, but v16.20.2 should be kept since it's installed
77+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=18 nvm_print_versions "$(nvm_remote_versions)")"
78+
EXPECTED_OUTPUT=" v16.20.2 * (Latest LTS: Gallium)
79+
v18.0.0
80+
v18.1.0
81+
v18.20.2 (LTS: Hydrogen)
82+
-> v18.20.3 * (Latest LTS: Hydrogen)
83+
v19.0.0
84+
v19.9.0
85+
v20.0.0
86+
v20.8.1
87+
v20.9.0 (Latest LTS: Iron)
88+
v21.0.0
89+
v21.1.0"
90+
91+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=18 nvm_print_versions did not output all expected versions; got $OUTPUT"
92+
93+
94+
# versions lower than 19 should be filtered out
95+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=19 nvm_print_versions "$(nvm_remote_versions)")"
96+
EXPECTED_OUTPUT=" v16.20.2 * (Latest LTS: Gallium)
97+
-> v18.20.3 * (Latest LTS: Hydrogen)
98+
v19.0.0
99+
v19.9.0
100+
v20.0.0
101+
v20.8.1
102+
v20.9.0 (Latest LTS: Iron)
103+
v21.0.0
104+
v21.1.0"
105+
106+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=19 nvm_print_versions did not output all expected versions; got $OUTPUT"
107+
108+
109+
# versions lower than 20.1 should be filtered out, so v20.0.0 is out
110+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=20.1 nvm_print_versions "$(nvm_remote_versions)")"
111+
EXPECTED_OUTPUT=" v16.20.2 * (Latest LTS: Gallium)
112+
-> v18.20.3 * (Latest LTS: Hydrogen)
113+
v20.8.1
114+
v20.9.0 (Latest LTS: Iron)
115+
v21.0.0
116+
v21.1.0"
117+
118+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=20.1 nvm_print_versions did not output all expected versions; got $OUTPUT"
119+
120+
121+
# assume v18.20.3 is NOT installed, so now it should be filtered out
122+
nvm_ls() {
123+
echo "v16.20.2
124+
system
125+
"
126+
}
127+
128+
nvm_ls_current() {
129+
echo "v16.20.2"
130+
}
131+
132+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=20.1 nvm_print_versions "$(nvm_remote_versions)")"
133+
EXPECTED_OUTPUT="-> v16.20.2 * (Latest LTS: Gallium)
134+
v20.8.1
135+
v20.9.0 (Latest LTS: Iron)
136+
v21.0.0
137+
v21.1.0"
138+
139+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=20.1 nvm_print_versions did not output all expected versions; got $OUTPUT"
140+
141+
142+
cleanup

0 commit comments

Comments
 (0)