diff options
| author | ruki <[email protected]> | 2024-03-05 22:44:37 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-03-05 22:44:37 +0800 |
| commit | a5e284bd5972a3f85250fa8cd894c4669d086a11 (patch) | |
| tree | c5454c443767aa7ab59e76e0cebd418bd835cf60 | |
| parent | 69d11ecb1f292694bec66c061ad4c92584e9f7d5 (diff) | |
add more tests
| -rw-r--r-- | tests/modules/private/select_script/test.lua | 83 | ||||
| -rw-r--r-- | xmake/core/base/private/select_script.lua | 22 |
2 files changed, 90 insertions, 15 deletions
diff --git a/tests/modules/private/select_script/test.lua b/tests/modules/private/select_script/test.lua index f1e950dd1..e7efcaa84 100644 --- a/tests/modules/private/select_script/test.lua +++ b/tests/modules/private/select_script/test.lua @@ -20,21 +20,92 @@ function test_plat_only(t) t:require(_match_pattern("!mac*", {plat = "linux"})) end -function test_arch_only(t) -end - function test_plat_arch(t) + t:require(_match_pattern("*|x86_64", {plat = "macosx", arch = "x86_64"})) + t:require(_match_pattern("macosx|x86_64", {plat = "macosx", arch = "x86_64"})) + t:require(_match_pattern("macosx|x86_64,linux|x86_64", {plat = "macosx", arch = "x86_64"})) + t:require(_match_pattern("macosx|x86_*", {plat = "macosx", arch = "x86_64"})) + t:require_not(_match_pattern("macosx|x86_64", {plat = "linux", arch = "x86_64"})) + t:require_not(_match_pattern("macosx|i386", {plat = "macosx", arch = "x86_64"})) + t:require_not(_match_pattern("!macosx|x86_64", {plat = "macosx", arch = "x86_64"})) + t:require_not(_match_pattern("!mac*|x86_64", {plat = "macosx", arch = "x86_64"})) + t:require(_match_pattern("!macosx|x86_64", {plat = "linux", arch = "x86_64"})) + t:require(_match_pattern("!mac*|x86_64", {plat = "linux", arch = "x86_64"})) + t:require(_match_pattern("macosx|!i386", {plat = "macosx", arch = "x86_64"})) + t:require(_match_pattern("!macosx|!i386", {plat = "linux", arch = "x86_64"})) + t:require(_match_pattern("windows|!x86", {plat = "windows", arch = "x64"})) +-- t:require_not(_match_pattern("windows|!x86", {plat = "android", arch = "arm64-v8a"})) + t:require(_match_pattern("macosx|native", {plat = "macosx", arch = "x86_64", subarch = "x86_64"})) + t:require(_match_pattern("macosx|!native", {plat = "macosx", arch = "arm64", subarch = "x86_64"})) + t:require_not(_match_pattern("macosx|!native", {plat = "macosx", arch = "x86_64", subarch = "x86_64"})) + t:require_not(_match_pattern("windows|native", {plat = "macosx", arch = "x86_64", subarch = "x86_64"})) end function test_subhost_only(t) + t:require(_match_pattern("@*", {subhost = "macosx"})) + t:require(_match_pattern("@macosx", {subhost = "macosx"})) + t:require(_match_pattern("@macosx,@linux", {subhost = "macosx"})) + t:require(_match_pattern("@mac*", {subhost = "macosx"})) + t:require_not(_match_pattern("@macosx", {subhost = "linux"})) + t:require_not(_match_pattern("@linux", {subhost = "macosx"})) + t:require_not(_match_pattern("@!macosx", {subhost = "macosx"})) + t:require_not(_match_pattern("@!mac*", {subhost = "macosx"})) + t:require(_match_pattern("@!macosx", {subhost = "linux"})) + t:require(_match_pattern("@!mac*", {subhost = "linux"})) end -function test_subarch_only(t) +function test_subhost_subarch(t) + t:require(_match_pattern("@*|x86_64", {subhost = "macosx", subarch = "x86_64"})) + t:require(_match_pattern("@macosx|x86_64", {subhost = "macosx", subarch = "x86_64"})) + t:require(_match_pattern("@macosx|x86_64,@linux|x86_64", {subhost = "macosx", subarch = "x86_64"})) + t:require(_match_pattern("@macosx|x86_*", {subhost = "macosx", subarch = "x86_64"})) + t:require_not(_match_pattern("@macosx|x86_64", {subhost = "linux", subarch = "x86_64"})) + t:require_not(_match_pattern("@macosx|i386", {subhost = "macosx", subarch = "x86_64"})) + t:require_not(_match_pattern("@!macosx|x86_64", {subhost = "macosx", subarch = "x86_64"})) + t:require_not(_match_pattern("@!mac*|x86_64", {subhost = "macosx", subarch = "x86_64"})) + t:require(_match_pattern("@!macosx|x86_64", {subhost = "linux", subarch = "x86_64"})) + t:require(_match_pattern("@!mac*|x86_64", {subhost = "linux", subarch = "x86_64"})) + t:require(_match_pattern("@macosx|!i386", {subhost = "macosx", subarch = "x86_64"})) + t:require(_match_pattern("@!macosx|!i386", {subhost = "linux", subarch = "x86_64"})) + t:require(_match_pattern("@windows|!x86", {subhost = "windows", subarch = "x64"})) +-- t:require_not(_match_pattern("@windows|!x86", {subhost = "android", subarch = "arm64-v8a"})) + t:require(_match_pattern("@macosx|native", {subhost = "macosx", subarch = "x86_64"})) + t:require(_match_pattern("@macosx|native", {subhost = "macosx", subarch = "arm64"})) + t:require_not(_match_pattern("@macosx|!native", {subhost = "macosx", subarch = "x86_64"})) + t:require_not(_match_pattern("@windows|native", {subhost = "macosx", subarch = "x86_64"})) end -function test_subarch_native(t) +function test_plat_subhost(t) + t:require(_match_pattern("*@macosx", {plat = "macosx", subhost = "macosx"})) + t:require(_match_pattern("android@macosx", {plat = "android", subhost = "macosx"})) + t:require(_match_pattern("android@macosx,linux", {plat = "android", subhost = "linux"})) + t:require(_match_pattern("android@mac*", {plat = "android", subhost = "macosx"})) + t:require(_match_pattern("android@!macosx", {plat = "android", subhost = "linux"})) + t:require_not(_match_pattern("!android@macosx", {plat = "android", subhost = "macosx"})) + t:require(_match_pattern("!iphon*@macosx", {plat = "linux", subhost = "macosx"})) end -function test_subhost_subarch(t) +function test_plat_arch_subhost(t) + t:require(_match_pattern("*|x86_64@macosx", {plat = "macosx", subhost = "macosx", arch = "x86_64"})) + t:require(_match_pattern("android|arm64-v8a@macosx", {plat = "android", subhost = "macosx", arch = "arm64-v8a"})) + t:require(_match_pattern("android|x86_64@macosx,linux", {plat = "android", subhost = "linux", arch = "x86_64"})) + t:require(_match_pattern("android|x86_64@mac*", {plat = "android", subhost = "macosx", arch = "x86_64"})) + t:require(_match_pattern("android|x86_64@!macosx", {plat = "android", subhost = "linux", arch = "x86_64"})) + t:require_not(_match_pattern("!android|x86_64@macosx", {plat = "android", subhost = "macosx", arch = "x86_64"})) + t:require(_match_pattern("!iphon*|x86_64@macosx", {plat = "linux", subhost = "macosx", arch = "x86_64"})) + t:require(_match_pattern("iphon*|arm64@macosx", {plat = "iphoneos", subhost = "macosx", arch = "arm64"})) + t:require_not(_match_pattern("iphon*|arm64@macosx", {plat = "iphoneos", subhost = "linux", arch = "arm64"})) end +function test_plat_arch_subhost_subarch(t) + t:require(_match_pattern("*|x86_64@macosx|x86_64", {plat = "macosx", subhost = "macosx", arch = "x86_64", subarch = "x86_64"})) + t:require(_match_pattern("android|arm64-v8a@macosx|x86_64", {plat = "android", subhost = "macosx", arch = "arm64-v8a", subarch = "x86_64"})) + t:require(_match_pattern("android|x86_64@macosx|x86_64,linux|x86_64", {plat = "android", subhost = "linux", arch = "x86_64", subarch = "x86_64"})) + t:require(_match_pattern("android|x86_64@mac*|x86_64", {plat = "android", subhost = "macosx", arch = "x86_64", subarch = "x86_64"})) + t:require(_match_pattern("android|x86_64@!macosx|x86_64", {plat = "android", subhost = "linux", arch = "x86_64", subarch = "x86_64"})) + t:require_not(_match_pattern("!android|x86_64@macosx|x86_64", {plat = "android", subhost = "macosx", arch = "x86_64", subarch = "x86_64"})) + t:require(_match_pattern("!iphon*|x86_64@macosx|x86_64", {plat = "linux", subhost = "macosx", arch = "x86_64", subarch = "x86_64"})) + t:require(_match_pattern("iphon*|arm64@macosx|x86_64", {plat = "iphoneos", subhost = "macosx", arch = "arm64", subarch = "x86_64"})) + t:require_not(_match_pattern("iphon*|arm64@macosx|x86_64", {plat = "iphoneos", subhost = "linux", arch = "arm64", subarch = "x86_64"})) +-- t:require(_match_pattern("android|native@macosx|x86_64", {plat = "android", subhost = "macosx", arch = "x86_64", subarch = "x86_64"})) +end diff --git a/xmake/core/base/private/select_script.lua b/xmake/core/base/private/select_script.lua index b9cb7ad12..323944ab4 100644 --- a/xmake/core/base/private/select_script.lua +++ b/xmake/core/base/private/select_script.lua @@ -23,15 +23,20 @@ local table = require("base/table") local utils = require("base/utils") -- match pattern, matched mode: plat|arch, excluded mode: !plat|arch -function _match_pattern(pattern, plat, arch, excluded) +function _match_pattern(pattern, plat, arch, opt) + opt = opt or {} + local excluded = opt.excluded + local subhost = opt.subhost or os.subhost() + local subarch = opt.subarch or os.subarch() + -- support native arch, e.g. macosx|native -- @see https://github.com/xmake-io/xmake/issues/4657 if pattern:find("native", 1, true) then local splitinfo = pattern:split("|") local pattern_plat = splitinfo[1] local pattern_arch = splitinfo[2] - if pattern_arch and pattern_plat:trim("!") == os.subhost() then - pattern_arch = pattern_arch:gsub("native", os.subarch()) + if pattern_arch and pattern_plat:trim("!") == subhost then + pattern_arch = pattern_arch:gsub("native", subarch) pattern = pattern_plat .. "|" .. pattern_arch end end @@ -46,9 +51,9 @@ function _match_pattern(pattern, plat, arch, excluded) end -- match patterns -function _match_patterns(patterns, plat, arch, excluded) +function _match_patterns(patterns, plat, arch, opt) for _, pattern in ipairs(patterns) do - if _match_pattern(pattern, plat, arch, excluded) then + if _match_pattern(pattern, plat, arch, opt) then return true end end @@ -103,18 +108,17 @@ function _match_script(pattern, opt) local arch = opt.arch or "" local subhost = opt.subhost or os.subhost() local subarch = opt.subarch or os.subarch() - local excluded = opt.excluded if plat_patterns and #plat_patterns > 0 then - if _match_patterns(plat_patterns, plat, arch, excluded) then + if _match_patterns(plat_patterns, plat, arch, opt) then if host_patterns and #host_patterns > 0 and - not _match_patterns(host_patterns, subhost, subarch, excluded) then + not _match_patterns(host_patterns, subhost, subarch, opt) then return false end return true end else if host_patterns and #host_patterns > 0 then - return _match_patterns(host_patterns, subhost, subarch, excluded) + return _match_patterns(host_patterns, subhost, subarch, opt) end end end |
