diff options
| author | ruki <[email protected]> | 2023-01-31 11:39:31 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-01-31 11:39:31 +0800 |
| commit | e0b230efd273e6afec56a33f8ad3b606394192ec (patch) | |
| tree | 71907146af62cd5419decbce1fe4f6db74f87741 | |
| parent | 7dccbc709bafaec3be01d9723b7b9150f7092a5b (diff) | |
| parent | 90415ee4d3a21c09086b6012085443fb098c3bec (diff) | |
Merge pull request #3322 from xmake-io/package
improve semver.satisfies
| -rw-r--r-- | core/src/xmake/semver/satisfies.c | 24 | ||||
| -rwxr-xr-x | tests/modules/semver/test.lua | 2 |
2 files changed, 23 insertions, 3 deletions
diff --git a/core/src/xmake/semver/satisfies.c b/core/src/xmake/semver/satisfies.c index f79167748..5a3ab6045 100644 --- a/core/src/xmake/semver/satisfies.c +++ b/core/src/xmake/semver/satisfies.c @@ -52,12 +52,32 @@ tb_int_t xm_semver_satisfies(lua_State* lua) semver_range_t range = {0}; if (semver_rangen(&range, range_str, tb_strlen(range_str))) { - // is branch name? try to match it + // range is branch name? try to match it + semver_t range_semver = {0}; if (!tb_strcmp(version_str, range_str)) { lua_pushboolean(lua, tb_true); return 1; } + // range is a single version? try to compare it + else if (!semver_tryn(&range_semver, range_str, tb_strlen(range_str))) + { + semver_t semver = {0}; + if (!semver_tryn(&semver, version_str, tb_strlen(version_str))) + { + lua_pushboolean(lua, semver_pcmp(&semver, &range_semver) == 0); + semver_dtor(&semver); + semver_dtor(&range_semver); + return 1; + } + else + { + semver_dtor(&range_semver); + lua_pushnil(lua); + lua_pushfstring(lua, "unable to parse semver '%s'", version_str); + return 2; + } + } else { lua_pushnil(lua); @@ -79,7 +99,5 @@ tb_int_t xm_semver_satisfies(lua_State* lua) lua_pushboolean(lua, semver_range_match(semver, range)); semver_dtor(&semver); semver_range_dtor(&range); - - // ok return 1; } diff --git a/tests/modules/semver/test.lua b/tests/modules/semver/test.lua index 5141f099c..1ab6dc8aa 100755 --- a/tests/modules/semver/test.lua +++ b/tests/modules/semver/test.lua @@ -42,10 +42,12 @@ function test_semver_satisfies(t) _check_semver_satisfies(t, true, "1.5.1", "^1.5.0") _check_semver_satisfies(t, true, "1.5.1", "~1.5.0") _check_semver_satisfies(t, true, "1.6.0", "^1.5.0") + _check_semver_satisfies(t, true, "1.6.0", "v1.6.0") _check_semver_satisfies(t, false, "1.6.1", "~1.5.0") _check_semver_satisfies(t, false, "2.5.1", "^1.5.0") _check_semver_satisfies(t, false, "1.4.1", ">=1.5.0 <1.6.0") + _check_semver_satisfies(t, false, "1.6.0", "v1.6.1") end -- parse version |
