Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8221df2

Browse files
author
edwmurph
committedMay 31, 2018
renamed function; minor refactors; added test coverage; identified remaining work
1 parent faadbf8 commit 8221df2

8 files changed

+152
-75
lines changed
 

‎nvm.sh

+8-11
Original file line numberDiff line numberDiff line change
@@ -317,23 +317,18 @@ nvm_string_contains_regexp() {
317317
# semver ::= comparator_set ( ' || ' comparator_set )*
318318
# comparator_set ::= comparator ( ' ' comparator )*
319319
# comparator ::= ( '<' | '<=' | '>' | '>=' | '' ) [0-9]+ '.' [0-9]+ '.' [0-9]+
320-
nvm_is_valid_semver() {
320+
nvm_is_normalized_semver() {
321321
nvm_string_contains_regexp "${1-}" '^( ?(<|<=|>|>=)?[0-9]+\.[0-9]+\.[0-9]+)+( \|\| ( ?(<|<=|>|>=)?[0-9]+\.[0-9]+\.[0-9]+)+)*$'
322322
}
323323

324324
nvm_trim_and_reduce_whitespace_to_one_space() {
325325
command printf '%s' "${1-}" |
326-
command tr -d '\n\r' |
327-
command tr '\t' ' ' |
326+
command tr '\n\r\t\v\b' ' ' |
328327
command tr -s ' ' |
329328
command sed 's/^ //; s/ $//; s/^ //'
330329
}
331330

332-
# Attempts to normalize the given semver to the following grammar:
333-
#
334-
# semver ::= comparator_set ( ' || ' comparator_set )*
335-
# comparator_set ::= comparator ( ' ' comparator )*
336-
# comparator ::= ( '<' | '<=' | '>' | '>=' | '' ) [0-9]+ '.' [0-9]+ '.' [0-9]+
331+
# Attempts to normalize the given semver to the grammar defined with the function nvm_is_normalized_semver
337332
nvm_normalize_semver() {
338333
# split the semantic version's comparator_set's onto their own lines for iteration
339334
local semver
@@ -475,7 +470,7 @@ nvm_normalize_semver() {
475470

476471
validated_semver=$(command printf '%s' "$validated_semver" | command sed -E 's/^ \|\| //')
477472

478-
if nvm_is_valid_semver "$validated_semver"; then
473+
if nvm_is_normalized_semver "$validated_semver"; then
479474
command printf '%s' "$validated_semver"
480475
else
481476
return 1
@@ -490,7 +485,7 @@ nvm_interpret_complex_semver() {
490485
semver="${1-}"
491486
local version_list
492487
version_list="${2-}" # expected to be sorted from oldest to newest
493-
if [ -z "$semver" ] || [ -z "$version_list" ] || ! nvm_is_valid_semver "$semver"; then
488+
if [ -z "$semver" ] || [ -z "$version_list" ] || ! nvm_is_normalized_semver "$semver"; then
494489
return 1
495490
fi
496491

@@ -506,6 +501,7 @@ nvm_interpret_complex_semver() {
506501
local current_comparator
507502
local stripped_version_from_comparator
508503
local highest_compatible_versions
504+
# TODO make this just always store the highest possible compatible version
509505
highest_compatible_versions=''
510506

511507
while [ -n "$semver" ]; do
@@ -521,6 +517,7 @@ nvm_interpret_complex_semver() {
521517
current_version=$(command printf '%s' "$version_list_copy" | command tail -n1 | command sed -E 's/^ +//;s/ +$//' | nvm_grep -o '^[0-9]\+\.[0-9]\+\.[0-9]\+$')
522518
version_list_copy=$(command printf '%s' "$version_list_copy" | command sed '$d')
523519
[ -n "$current_version" ] || continue
520+
# TODO if current_version is less than the highest version in highest_compatile_versions, no need to continue
524521

525522
# For each comparator in the current_comparator_set_copy:
526523
# - If current_version is compatible with all comparators, we know current_version is the newest compatible version
@@ -4078,7 +4075,7 @@ nvm() {
40784075
nvm_curl_libz_support nvm_command_info \
40794076
nvm_get_node_from_pkg_json nvm_find_package_json nvm_package_json_version \
40804077
nvm_interpret_node_semver nvm_interpret_simple_semver nvm_interpret_complex_semver nvm_normalize_semver \
4081-
nvm_is_valid_semver nvm_string_contains_regexp nvm_trim_and_reduce_whitespace_to_one_space \
4078+
nvm_is_normalized_semver nvm_string_contains_regexp nvm_trim_and_reduce_whitespace_to_one_space \
40824079
> /dev/null 2>&1
40834080
unset NVM_RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_IOJS_ORG_MIRROR NVM_DIR \
40844081
NVM_CD_FLAGS NVM_BIN NVM_MAKE_JOBS \

‎test/fast/Unit tests/nvm_get_node_from_pkg_json

+37-24
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,24 @@
88

99

1010
# (TEST SET #1) uses valid TEST_SEMVER's and valid package.json templates
11-
test_semvers_copy="$VALID_SEMVERS_FOR_PKG_JSON"
11+
test_cases="$VALID_SEMVERS_FOR_PKG_JSON"
12+
if [ -z "$test_cases" ]; then
13+
die 'TEST SET 1 for nvm_get_node_from_pkg_json given an empty set of test cases'
14+
fi
1215
prev_semver=''
1316
for template_file_name in package_json_templates/_valid_*; do
14-
while [ -n "$test_semvers_copy" ]; do
15-
semver=$(echo "$test_semvers_copy" | head -n1)
16-
test_semvers_copy=$(echo "$test_semvers_copy" | tail -n +2)
17+
while [ -n "$test_cases" ]; do
18+
semver=$(echo "$test_cases" | head -n1)
19+
test_cases=$(echo "$test_cases" | tail -n +2)
1720
[ -n "$semver" ] || continue
1821
expectedOutput=$(nvm_trim_and_reduce_whitespace_to_one_space "$semver")
1922

2023
if [ "$prev_semver" = "$semver" ]; then
21-
die "Problem iterating through test_semvers_copy (TEST SET #1). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
24+
die "Problem iterating through test_cases (TEST SET #1). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
2225
fi
2326
prev_semver="$semver"
2427

25-
pkg_json_contents=$(sed 's/NODE_SEMVER/'"$semver"'/g' "$template_file_name" | tail -n +3)
28+
pkg_json_contents=$(sed "s/NODE_SEMVER/$semver/g" "$template_file_name" | tail -n +3)
2629
actual_output=$(nvm_get_node_from_pkg_json "$pkg_json_contents")
2730
if [ "$actual_output" != "$expectedOutput" ] || [ -z "$actual_output" ] || [ -z "$pkg_json_contents" ]; then
2831
die "'nvm_get_node_from_pkg_json' POSITIVE test case failed (TEST SET #1). Expected '$expectedOutput' but got '$actual_output' when given input '$semver' and template '$template_file_name':\n$pkg_json_contents"
@@ -35,20 +38,23 @@ done
3538

3639

3740
# (TEST SET #2) uses valid TEST_SEMVER's but invalid package.json templates
38-
test_semvers_copy="$VALID_SEMVERS_FOR_PKG_JSON"
41+
test_cases="$VALID_SEMVERS_FOR_PKG_JSON"
42+
if [ -z "$test_cases" ]; then
43+
die 'TEST SET 2 for nvm_get_node_from_pkg_json given an empty set of test cases'
44+
fi
3945
prev_semver=''
4046
for template_file_name in package_json_templates/_invalid_*; do
41-
while [ -n "$test_semvers_copy" ]; do
42-
semver=$(echo "$test_semvers_copy" | head -n1)
43-
test_semvers_copy=$(echo "$test_semvers_copy" | tail -n +2)
47+
while [ -n "$test_cases" ]; do
48+
semver=$(echo "$test_cases" | head -n1)
49+
test_cases=$(echo "$test_cases" | tail -n +2)
4450
[ -n "$semver" ] || continue
4551

4652
if [ "$prev_semver" = "$semver" ]; then
47-
die "Problem iterating through test_semvers_copy (TEST SET #2). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
53+
die "Problem iterating through test_cases (TEST SET #2). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
4854
fi
4955
prev_semver="$semver"
5056

51-
pkg_json_contents=$(sed 's/NODE_SEMVER/'"$semver"'/g' "$template_file_name" | tail -n +3)
57+
pkg_json_contents=$(sed "s/NODE_SEMVER/$semver/g" "$template_file_name" | tail -n +3)
5258
actual_output=$(nvm_get_node_from_pkg_json "$pkg_json_contents")
5359
if [ "$actual_output" != "" ] || [ -z "$semver" ] || [ -z "$pkg_json_contents" ]; then
5460
die "'nvm_get_node_from_pkg_json' NEGATIVE test case failed (TEST SET #2). Expected to get empty string but got '$actual_output' when given input template '$template_file_name':\n$pkg_json_contents"
@@ -58,20 +64,23 @@ done
5864

5965

6066
# (TEST SET #3) uses invalid TEST_SEMVER's but valid package.json templates
61-
test_semvers_copy="$INVALID_SEMVERS_FOR_PKG_JSON"
67+
test_cases="$INVALID_SEMVERS_FOR_PKG_JSON"
68+
if [ -z "$test_cases" ]; then
69+
die 'TEST SET 3 for nvm_get_node_from_pkg_json given an empty set of test cases'
70+
fi
6271
prev_semver=''
6372
for template_file_name in package_json_templates/_valid_*; do
64-
while [ -n "$test_semvers_copy" ]; do
65-
semver=$(echo "$test_semvers_copy" | head -n1)
73+
while [ -n "$test_cases" ]; do
74+
semver=$(echo "$test_cases" | head -n1)
6675
[ -n "$semver" ] || continue
67-
test_semvers_copy=$(echo "$test_semvers_copy" | tail -n +2)
76+
test_cases=$(echo "$test_cases" | tail -n +2)
6877

6978
if [ "$prev_semver" = "$semver" ]; then
70-
die "Problem iterating through test_semvers_copy (TEST SET #3). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
79+
die "Problem iterating through test_cases (TEST SET #3). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
7180
fi
7281
prev_semver=$(printf "%s" "$semver")
7382

74-
pkg_json_contents=$(sed 's/NODE_SEMVER/'"$semver"'/g' "$template_file_name" | tail -n +3)
83+
pkg_json_contents=$(sed "s/NODE_SEMVER/$semver/g" "$template_file_name" | tail -n +3)
7584
actual_output=$(nvm_get_node_from_pkg_json "$pkg_json_contents")
7685
if [ "$actual_output" != "" ] || [ -z "$semver" ] || [ -z "$pkg_json_contents" ]; then
7786
die "'nvm_get_node_from_pkg_json' NEGATIVE test case failed (TEST SET #3). Expected to get empty string but got '$actual_output' when given input template '$template_file_name':\n$pkg_json_contents"
@@ -80,24 +89,28 @@ for template_file_name in package_json_templates/_valid_*; do
8089
done
8190

8291
# (TEST SET #4) uses invalid TEST_SEMVER's and invalid package.json templates
83-
test_semvers_copy="$INVALID_SEMVERS_FOR_PKG_JSON"
92+
test_cases="$INVALID_SEMVERS_FOR_PKG_JSON"
93+
if [ -z "$test_cases" ]; then
94+
die 'TEST SET 4 for nvm_get_node_from_pkg_json given an empty set of test cases'
95+
fi
8496
prev_semver=''
8597
for template_file_name in package_json_templates/_invalid_*; do
86-
while [ -n "$test_semvers_copy" ]; do
87-
semver=$(echo "$test_semvers_copy" | head -n1)
98+
while [ -n "$test_cases" ]; do
99+
semver=$(echo "$test_cases" | head -n1)
88100
[ -n "$semver" ] || continue
89-
test_semvers_copy=$(echo "$test_semvers_copy" | tail -n +2)
101+
test_cases=$(echo "$test_cases" | tail -n +2)
90102

91103
if [ "$prev_semver" = "$semver" ]; then
92-
die "Problem iterating through test_semvers_copy (TEST SET #4). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
104+
die "Problem iterating through test_cases (TEST SET #4). Encountered the same value twice in a row. prev_semver='$prev_semver' semver='$semver'.\n"
93105
fi
94106
prev_semver=$(printf "%s" "$semver")
95107

96-
pkg_json_contents=$(sed 's/NODE_SEMVER/'"$semver"'/g' "$template_file_name" | tail -n +3)
108+
pkg_json_contents=$(sed "s/NODE_SEMVER/$semver/g" "$template_file_name" | tail -n +3)
97109
actual_output=$(nvm_get_node_from_pkg_json "$pkg_json_contents")
98110
if [ "$actual_output" != "" ] || [ -z "$semver" ] || [ -z "$pkg_json_contents" ]; then
99111
die "'nvm_get_node_from_pkg_json' NEGATIVE test case failed (TEST SET #4). Expected to get empty string but got '$actual_output' when given input template '$template_file_name':\n$pkg_json_contents"
100112
fi
101113
done
102114
done
115+
exit 0
103116

‎test/fast/Unit tests/nvm_is_valid_semver renamed to ‎test/fast/Unit tests/nvm_is_normalized_semver

+8-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
\. ../../../nvm.sh
44
\. ../../generated_semvers.sh
55

6-
# nvm_is_valid_semver validates that given semvers adhere to the following grammer
6+
# nvm_is_normalized_semver validates that given semvers adhere to the following grammer
77
#
88
# semver ::= comparator_set ( ' || ' comparator_set )*
99
# comparator_set ::= comparator ( ' ' comparator )*
@@ -13,14 +13,14 @@
1313

1414
positive_test_cases="$VALID_NORMALIZED_SEMVERS"
1515
if [ -z "$positive_test_cases" ]; then
16-
die "positive test cases are empty"
16+
die 'positive test cases are empty'
1717
fi
1818

1919
prev_semver=''
2020
while [ -n "$positive_test_cases" ]; do
2121
semver=$(echo "$positive_test_cases" | head -n1)
22-
if [ -z "$semver" ] || ! nvm_is_valid_semver "$semver"; then
23-
die "nvm_string_contains_regexp POSITIVE test case failed. semver: '$semver'.\n"
22+
if [ -z "$semver" ] || ! nvm_is_normalized_semver "$semver"; then
23+
die "nvm_is_normalized_semver POSITIVE test case failed. semver: '$semver'.\n"
2424
fi
2525
if [ "$prev_semver" = "$semver" ]; then
2626
die "something is wrong. positive test cases received the same test case twice in a row. semver: '$semver'"
@@ -31,16 +31,16 @@ done
3131

3232
# NEGATIVE TEST CASES
3333

34-
negative_test_cases="$VALID_NON_NORMALIZED_SEMVERS"
34+
negative_test_cases=$(printf "%s\n%s" "$VALID_NON_NORMALIZED_SEMVERS" "$INVALID_SEMVERS_FOR_PKG_JSON")
3535
if [ -z "$negative_test_cases" ]; then
36-
die "negative test cases are empty"
36+
die 'negative test cases are empty'
3737
fi
3838

3939
prev_semver='initialized to non empty string'
4040
while [ -n "$negative_test_cases" ]; do
4141
semver=$(echo "$negative_test_cases" | head -n1)
42-
if nvm_is_valid_semver "$semver"; then
43-
die "nvm_string_contains_regexp NEGATIVE test case failed. semver: '$semver'.\n"
42+
if nvm_is_normalized_semver "$semver"; then
43+
die "nvm_is_normalized_semver NEGATIVE test case failed. semver: '$semver'.\n"
4444
fi
4545
if [ "$prev_semver" = "$semver" ]; then
4646
die "something is wrong. negative test cases received the same test case twice in a row. semver: '$semver'"

‎test/fast/Unit tests/nvm_normalize_semver

+47-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,36 @@
33
\. ../../../nvm.sh
44
\. ../../generated_semvers.sh
55

6-
# TODO add more test cases here
7-
# Some test cases should just test that valid semvers from 'Shared test tesources'/semvers just produce some result
6+
# TEST 1: Validate that for already normalized semvers, nvm_normalize_semver outputs the same semver.
7+
test_cases="$VALID_NORMALIZED_SEMVERS"
8+
if [ -z "$test_cases" ]; then
9+
die 'nvm_normalize_semver (TEST 1) was given an empty set of test cases'
10+
fi
11+
while [ -n "$test_cases" ]; do
12+
semver=$(echo "$test_cases" | head -n1)
13+
actual_output=$(nvm_normalize_semver "$semver")
14+
if [ -z "$semver" ] || [ "$semver" != "$actual_output" ]; then
15+
die "nvm_normalize_semver (TEST 1) test case failed. Expected output: '$semver'. Actual output: '$actual_output'. Input: '$semver'.\n"
16+
fi
17+
test_cases=$(echo "$test_cases" | tail -n +2)
18+
done
819

20+
21+
# TEST 2: Validate that non normalized valid semvers produce a normalized result
22+
test_cases="$VALID_NON_NORMALIZED_SEMVERS"
23+
if [ -z "$test_cases" ]; then
24+
die 'nvm_normalize_semver (TEST 2) was given an empty set of test cases'
25+
fi
26+
while [ -n "$test_cases" ]; do
27+
semver=$(echo "$test_cases" | head -n1)
28+
actual_output=$(nvm_normalize_semver "$semver")
29+
if [ -z "$semver" ] || [ -z "$actual_output" ] || [ "$semver" = "$actual_output" ]; then
30+
die "nvm_normalize_semver (TEST 2) test case failed. Expected output: '$semver'. Actual output: '$actual_output'. Input: '$semver'.\n"
31+
fi
32+
test_cases=$(echo "$test_cases" | tail -n +2)
33+
done
34+
35+
# TEST 3: Validate specific outputs for some specific inputs to nvm_normalize_semver.
936
# input:expected_output
1037
test_cases="1.2.3:1.2.3
1138
1.2.3 - 1.2.4:>=1.2.3 <=1.2.4
@@ -42,13 +69,30 @@ a || 1.2.3:
4269
^x.1.1:>0.0.0
4370
11.22.33:11.22.33"
4471

72+
if [ -z "$test_cases" ]; then
73+
die 'nvm_normalize_semver (TEST 3) was given an empty set of test cases'
74+
fi
4575
while [ -n "$test_cases" ]; do
4676
line=$(echo "$test_cases" | head -n1)
4777
input=$(echo "$line" | awk -F: '{ print $1 }')
4878
expected_output=$(echo "$line" | awk -F: '{ print $2 }')
4979
actual_output=$(nvm_normalize_semver "$input")
5080
if [ -z "$input" ] || [ "$actual_output" != "$expected_output" ]; then
51-
die "nvm_normalize_semver test case failed. Expected output: '$expected_output'. Actual output: '$actual_output'. Input: '$input'.\n"
81+
die "nvm_normalize_semver (TEST 3) test case failed. Expected output: '$expected_output'. Actual output: '$actual_output'. Input: '$input'.\n"
82+
fi
83+
test_cases=$(echo "$test_cases" | tail -n +2)
84+
done
85+
86+
# TEST 4: Validate that invalid semvers with invalid characters that shouldn't be retrieved from the package.json produce no result from nvm_normalize_semver
87+
test_cases="$INVALID_SEMVERS_FOR_PKG_JSON"
88+
if [ -z "$test_cases" ]; then
89+
die 'nvm_normalize_semver (TEST 4) was given an empty set of test cases'
90+
fi
91+
while [ -n "$test_cases" ]; do
92+
semver=$(echo "$test_cases" | head -n1)
93+
actual_output=$(nvm_normalize_semver "$semver")
94+
if [ -z "$semver" ] || [ -n "$actual_output" ]; then
95+
die "nvm_normalize_semver (TEST 4) test case failed. Expected no output but got: '$actual_output'. Input: '$semver'.\n"
5296
fi
5397
test_cases=$(echo "$test_cases" | tail -n +2)
5498
done

‎test/fast/Unit tests/nvm_string_contains_regexp

+10-21
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,30 @@
11
#!/bin/sh
22

3-
die () { printf "$@" ; exit 1; }
4-
53
\. ../../../nvm.sh
4+
\. ../../generated_semvers.sh
65

7-
valid_semver_regexp='^( ?(<|<=|>|>=|=|~|\^)?([0-9]+|x)\.([0-9]+|x)\.([0-9]+|x))+$'
6+
normalized_semver_regexp='^( ?(<|<=|>|>=)?[0-9]+\.[0-9]+\.[0-9]+)+( \|\| ( ?(<|<=|>|>=)?[0-9]+\.[0-9]+\.[0-9]+)+)*$'
87

98
# POSITIVE TEST CASES
109

11-
# TODO add more test cases
12-
# string:regexp
13-
test_cases="1.2.3:$valid_semver_regexp
14-
11.22.33:$valid_semver_regexp"
15-
10+
test_cases="$VALID_NORMALIZED_SEMVERS"
1611
while [ -n "$test_cases" ]; do
17-
line=$(echo "$test_cases" | head -n1)
18-
string=$(echo "$line" | awk -F: '{ print $1 }')
19-
regexp=$(echo "$line" | awk -F: '{ print $2 }')
20-
if [ -z "$regexp" ] || [ -z "$string" ] || ! nvm_string_contains_regexp "$string" "$regexp"; then
21-
die "nvm_string_contains_regexp POSITIVE test case failed. regexp: '$regexp'. string: '$string'.\n"
12+
string=$(echo "$test_cases" | head -n1)
13+
if [ -z "$normalized_semver_regexp" ] || [ -z "$string" ] || ! nvm_string_contains_regexp "$string" "$normalized_semver_regexp"; then
14+
die "nvm_string_contains_regexp POSITIVE test case failed. regexp: '$normalized_semver_regexp'. string: '$string'.\n"
2215
fi
2316
test_cases=$(echo "$test_cases" | tail -n +2)
2417
done
2518

2619
# NEGATIVE TEST CASES
2720

2821
# string:regexp
29-
test_cases="1.2.a:$valid_semver_regexp
30-
:$valid_semver_regexp
31-
11.22.a:$valid_semver_regexp"
22+
test_cases=$(printf "%s\n%s" "$VALID_NON_NORMALIZED_SEMVERS" "$INVALID_SEMVERS_FOR_PKG_JSON")
3223

3324
while [ -n "$test_cases" ]; do
34-
line=$(echo "$test_cases" | head -n1)
35-
string=$(echo "$line" | awk -F: '{ print $1 }')
36-
regexp=$(echo "$line" | awk -F: '{ print $2 }')
37-
if [ -z "$regexp" ] || nvm_string_contains_regexp "$string" "$regexp"; then
38-
die "nvm_string_contains_regexp NEGATIVE test case failed. regexp: '$regexp'. string: '$string'.\n"
25+
string=$(echo "$test_cases" | head -n1)
26+
if [ -z "$normalized_semver_regexp" ] || nvm_string_contains_regexp "$string" "$normalized_semver_regexp"; then
27+
die "nvm_string_contains_regexp NEGATIVE test case failed. regexp: '$normalized_semver_regexp'. string: '$string'.\n"
3928
fi
4029
test_cases=$(echo "$test_cases" | tail -n +2)
4130
done

‎test/fast/Unit tests/nvm_trim_and_reduce_whitespace_to_one_space

+28-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ die () { printf "$@" ; exit 1; }
44

55
\. ../../../nvm.sh
66

7-
# TODO add more test cases
7+
# Test cases that have no new lines
88
# input:expected_output
9-
test_cases="1.2.3:$valid_semver_regexp
10-
11.22.33:$valid_semver_regexp"
11-
129
test_cases='1:1
10+
1 2 3:1 2 3
11+
1.1 2.2 :1.1 2.2
1312
1.2.3:1.2.3
1413
1 1 :1 1
1514
2 2 :2 2'
@@ -24,5 +23,30 @@ while [ -n "$test_cases" ]; do
2423
fi
2524
test_cases=$(echo "$test_cases" | tail -n +2)
2625
done
26+
27+
# Test cases that have new lines
28+
expected_output='1 2 3'
29+
new_line_1=' 1
30+
2 3 '
31+
actual_output=$(nvm_trim_and_reduce_whitespace_to_one_space "$new_line_1")
32+
if [ "$actual_output" != "$expected_output" ]; then
33+
die "nvm_trim_and_reduce_whitespace_to_one_space test with new_line_1 failed. Actual output: '$actual_output' Expected output: '$expected_output'"
34+
fi
35+
36+
new_line_2=' 1 2
37+
3 '
38+
actual_output=$(nvm_trim_and_reduce_whitespace_to_one_space "$new_line_2")
39+
if [ "$actual_output" != "$expected_output" ]; then
40+
die "nvm_trim_and_reduce_whitespace_to_one_space test with new_line_2 failed. Actual output: '$actual_output' Expected output: '$expected_output'"
41+
fi
42+
43+
new_line_3=' 1
44+
45+
2
46+
3'
47+
actual_output=$(nvm_trim_and_reduce_whitespace_to_one_space "$new_line_3")
48+
if [ "$actual_output" != "$expected_output" ]; then
49+
die "nvm_trim_and_reduce_whitespace_to_one_space test with new_line_3 failed. Actual output: '$actual_output' Expected output: '$expected_output'"
50+
fi
2751
exit 0
2852

‎test/generated_semvers.sh

+7-3
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ VALID_NORMALIZED_COMPLEX_SEMVERS='10.3.0 || 8.1.1 || 4.1.0
9696
8.0.0 || <6.12.0'
9797

9898
# Valid semvers that should resolve to a node version but need to be validated/normalized before interpretting.
99-
VALID_NON_NORMALIZED_SEMVERS='x
99+
VALID_NON_NORMALIZED_COMPLEX_SEMVERS='x
100100
X
101101
*
102102
x.x
@@ -175,10 +175,14 @@ VALID_NORMALIZED_SEMVERS=$(printf "%s\n%s\n%s" \
175175
"$(generate_semvers "$VALID_NORMALIZED_VERSIONS" "$VALID_NORMALIZED_SEMVER_OPERATORS")" \
176176
)
177177

178-
VALID_SEMVERS=$(printf "%s\n%s\n%s" \
178+
VALID_NON_NORMALIZED_SEMVERS=$(printf "%s\n%s" \
179+
"$VALID_NON_NORMALIZED_COMPLEX_SEMVERS" \
180+
"$(generate_semvers "$VALID_NORMALIZED_VERSIONS" "$VALID_NON_NORMALIZED_SEMVER_OPERATORS" 0)" \
181+
)
182+
183+
VALID_SEMVERS=$(printf "%s\n%s" \
179184
"$VALID_NORMALIZED_SEMVERS" \
180185
"$VALID_NON_NORMALIZED_SEMVERS" \
181-
"$(generate_semvers "$VALID_NORMALIZED_VERSIONS" "$VALID_NON_NORMALIZED_SEMVER_OPERATORS" 0)" \
182186
)
183187

184188
VALID_SEMVERS_FOR_PKG_JSON=$(printf "%s\n%s" \

‎test/slow/nvm_interpret_node_semver

+7-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ while [ -n "$test_cases" ]; do
3030
done
3131

3232
# TODO add more test cases here
33+
# TODO get the following semvers working: ^7 ^7.x ^7.0 ~8 ~8.0
3334
# Verify actual outputs given some inputs
3435
# input:expected_output
3536
test_cases="*:$NEWEST_NODE_VERSION
@@ -38,7 +39,12 @@ x:$NEWEST_NODE_VERSION
3839
X:$NEWEST_NODE_VERSION
3940
0.12.18:0.12.18
4041
0.11.16:0.11.16
41-
222.22.2:
42+
7.0.0||7.2.1:7.2.1
43+
7-8:8.0.0
44+
7.0:7.0.0
45+
^7.0.0:7.10.1
46+
~8.1.0:8.1.4
47+
^7.0.0||6.8.1:7.10.1
4248
>0.12.18:$NEWEST_NODE_VERSION
4349
>=0.11.16:$NEWEST_NODE_VERSION
4450
7.1.0 || 7.3.0 || 7.2.0:7.3.0

0 commit comments

Comments
 (0)
Please sign in to comment.