summaryrefslogtreecommitdiff
path: root/tests/modules/semver/test.lua
diff options
context:
space:
mode:
authorapocelipes <[email protected]>2026-08-09 05:35:46 +0800
committerapocelipes <[email protected]>2026-08-09 06:08:45 +0800
commit1d8683111e485d8a1172b6b689da6dddb3127735 (patch)
treec575cedb7b6cf3f18ec255441c8dc6c25c82df22 /tests/modules/semver/test.lua
parent6ac4ea833193a4319a1eb6e5f588d1877fd48064 (diff)
fix(semver): correct version selection
semver_rangen() accepts an exact version as a range, and SemVer comparison ignores build metadata. This can select a different version than requested. Try exact string matches for versions and tags before falling back to the range selection.
Diffstat (limited to 'tests/modules/semver/test.lua')
-rwxr-xr-xtests/modules/semver/test.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/modules/semver/test.lua b/tests/modules/semver/test.lua
index 1ab6dc8aa..3c14ad1d7 100755
--- a/tests/modules/semver/test.lua
+++ b/tests/modules/semver/test.lua
@@ -18,6 +18,41 @@ function test_semver_select(t)
, "^1.5.0"
,{"1.4.0", "1.5.0", "1.5.1"})
+ _check_semver_select(t, {"3.53.0+200", "version"}
+ , "3.53.0+200"
+ , {"3.53.0+0", "3.53.0+100", "3.53.0+200"})
+
+ _check_semver_select(t, {"3.53.0+100", "version"}
+ , "3.53.0+999"
+ , {"3.53.0+100"})
+
+ _check_semver_select(t, {"1.2.3", "version"}
+ , "1.2.3"
+ , {"1.2.3+1", "1.2.3"})
+
+ _check_semver_select(t, {"1.2.9", "version"}
+ , "1.2"
+ , {"1.2", "1.2.9"})
+
+ _check_semver_select(t, {"1.9.0", "version"}
+ , "^1.2.3"
+ , {"^1.2.3", "1.2.3", "1.9.0"})
+
+ _check_semver_select(t, {"v1.2.3+7", "version"}
+ , "1.2.3"
+ , {"v1.2.3+7"}
+ , {"1.2.3"})
+
+ _check_semver_select(t, {"3.53.0+200", "tag"}
+ , "3.53.0+200"
+ , nil
+ , {"3.53.0+0", "3.53.0+200"})
+
+ _check_semver_select(t, {"3.53.0+100", "tag"}
+ , "3.53.0+999"
+ , nil
+ , {"3.53.0+100"})
+
_check_semver_select(t, {"master", "branch"}
, "master"
, {"1.4.0", "1.5.0", "1.5.1"}