Skip to content

Commit 59e190d

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

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
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+
# mock currently active version
30+
nvm_ls_current() {
31+
echo "v18.20.3"
32+
}
33+
34+
nvm_remote_versions() {
35+
echo "v16.0.0
36+
v16.20.2 Gallium *
37+
v17.0.0
38+
v17.9.1
39+
v18.0.0
40+
v18.1.0
41+
v18.20.2 Hydrogen
42+
v18.20.3 Hydrogen *
43+
v19.0.0
44+
v19.9.0
45+
v20.0.0
46+
v20.8.1
47+
v20.9.0 Iron *
48+
v21.0.0
49+
v21.1.0"
50+
}
51+
52+
53+
# nvm_print_versions should print all versions from nvm_remote_versions
54+
OUTPUT="$(NVM_NO_COLORS=1 nvm_print_versions "$(nvm_remote_versions)")"
55+
EXPECTED_OUTPUT=" v16.0.0
56+
v16.20.2 * (Latest LTS: Gallium)
57+
v17.0.0
58+
v17.9.1
59+
v18.0.0
60+
v18.1.0
61+
v18.20.2 (LTS: Hydrogen)
62+
-> v18.20.3 * (Latest LTS: Hydrogen)
63+
v19.0.0
64+
v19.9.0
65+
v20.0.0
66+
v20.8.1
67+
v20.9.0 (Latest LTS: Iron)
68+
v21.0.0
69+
v21.1.0"
70+
71+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_print_versions did not output all expected versions; got $OUTPUT"
72+
73+
74+
# versions lower than 18 should be filtered out, but v16.20.2 should be kept since it's installed
75+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=18 nvm_print_versions "$(nvm_remote_versions)")"
76+
EXPECTED_OUTPUT=" v16.20.2 * (Latest LTS: Gallium)
77+
v18.0.0
78+
v18.1.0
79+
v18.20.2 (LTS: Hydrogen)
80+
-> v18.20.3 * (Latest LTS: Hydrogen)
81+
v19.0.0
82+
v19.9.0
83+
v20.0.0
84+
v20.8.1
85+
v20.9.0 (Latest LTS: Iron)
86+
v21.0.0
87+
v21.1.0"
88+
89+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=18 nvm_print_versions did not output all expected versions; got $OUTPUT"
90+
91+
92+
# versions lower than 19 should be filtered out
93+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=19 nvm_print_versions "$(nvm_remote_versions)")"
94+
EXPECTED_OUTPUT=" v16.20.2 * (Latest LTS: Gallium)
95+
-> v18.20.3 * (Latest LTS: Hydrogen)
96+
v19.0.0
97+
v19.9.0
98+
v20.0.0
99+
v20.8.1
100+
v20.9.0 (Latest LTS: Iron)
101+
v21.0.0
102+
v21.1.0"
103+
104+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=19 nvm_print_versions did not output all expected versions; got $OUTPUT"
105+
106+
107+
# versions lower than 20.1 should be filtered out, so v20.0.0 is out
108+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=20.1 nvm_print_versions "$(nvm_remote_versions)")"
109+
EXPECTED_OUTPUT=" v16.20.2 * (Latest LTS: Gallium)
110+
-> v18.20.3 * (Latest LTS: Hydrogen)
111+
v20.8.1
112+
v20.9.0 (Latest LTS: Iron)
113+
v21.0.0
114+
v21.1.0"
115+
116+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=20.1 nvm_print_versions did not output all expected versions; got $OUTPUT"
117+
118+
119+
# assume v18.20.3 is NOT installed, so now it should be filtered out
120+
nvm_ls() {
121+
echo "v16.20.2
122+
system"
123+
}
124+
125+
nvm_ls_current() {
126+
echo "v16.20.2"
127+
}
128+
129+
OUTPUT="$(NVM_NO_COLORS=1 NVM_MIN_VER=20.1 nvm_print_versions "$(nvm_remote_versions)")"
130+
EXPECTED_OUTPUT="-> v16.20.2 * (Latest LTS: Gallium)
131+
v20.8.1
132+
v20.9.0 (Latest LTS: Iron)
133+
v21.0.0
134+
v21.1.0"
135+
136+
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "NVM_MIN_VER=20.1 nvm_print_versions did not output all expected versions; got $OUTPUT"
137+
138+
139+
cleanup

0 commit comments

Comments
 (0)