mirror of
https://github.com/nvm-sh/nvm.git
synced 2025-05-11 06:41:50 +00:00
53 lines
1.7 KiB
Bash
Executable File
53 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
\. ../../../nvm.sh
|
|
\. ../../generated_semvers.sh
|
|
|
|
# nvm_is_normalized_semver validates that given semvers adhere to the following grammer
|
|
#
|
|
# semver ::= comparator_set ( ' || ' comparator_set )*
|
|
# comparator_set ::= comparator ( ' ' comparator )*
|
|
# comparator ::= ( '<' | '<=' | '>' | '>=' | '' ) [0-9]+ '.' [0-9]+ '.' [0-9]+
|
|
|
|
# POSITIVE TEST CASES
|
|
|
|
positive_test_cases="$VALID_NORMALIZED_SEMVERS"
|
|
if [ -z "$positive_test_cases" ]; then
|
|
die 'positive test cases are empty'
|
|
fi
|
|
|
|
prev_semver=''
|
|
while [ -n "$positive_test_cases" ]; do
|
|
semver=$(echo "$positive_test_cases" | head -n1)
|
|
if [ -z "$semver" ] || ! nvm_is_normalized_semver "$semver"; then
|
|
die "nvm_is_normalized_semver POSITIVE test case failed. semver: '$semver'.\n"
|
|
fi
|
|
if [ "$prev_semver" = "$semver" ]; then
|
|
die "something is wrong. positive test cases received the same test case twice in a row. semver: '$semver'"
|
|
fi
|
|
prev_semver="$semver"
|
|
positive_test_cases=$(echo "$positive_test_cases" | tail -n +2)
|
|
done
|
|
|
|
# NEGATIVE TEST CASES
|
|
|
|
negative_test_cases=$(printf "%s\n%s" "$VALID_NON_NORMALIZED_SEMVERS" "$INVALID_SEMVERS_FOR_PKG_JSON")
|
|
if [ -z "$negative_test_cases" ]; then
|
|
die 'negative test cases are empty'
|
|
fi
|
|
|
|
prev_semver='initialized to non empty string'
|
|
while [ -n "$negative_test_cases" ]; do
|
|
semver=$(echo "$negative_test_cases" | head -n1)
|
|
if nvm_is_normalized_semver "$semver"; then
|
|
die "nvm_is_normalized_semver NEGATIVE test case failed. semver: '$semver'.\n"
|
|
fi
|
|
if [ "$prev_semver" = "$semver" ]; then
|
|
die "something is wrong. negative test cases received the same test case twice in a row. semver: '$semver'"
|
|
fi
|
|
prev_semver="$semver"
|
|
negative_test_cases=$(echo "$negative_test_cases" | tail -n +2)
|
|
done
|
|
exit 0
|
|
|