summaryrefslogtreecommitdiff
path: root/tests/projects/c++/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2026-04-08 21:45:39 +0800
committerGitHub <[email protected]>2026-04-08 21:45:39 +0800
commit895072e295a4d8f3a4565cf73a5a600fe3e416dd (patch)
treeb49cf8231f9a7a72d366f4c7c4110f3e862e3a05 /tests/projects/c++/modules
parent3a91a8b27ebc9d40656750615a3606e5fe971fc9 (diff)
parent642adc138d7c3dee097328b27c327e5c34fccf00 (diff)
Merge pull request #7463 from xmake-io/modules
improve versions in c++ modules tests
Diffstat (limited to 'tests/projects/c++/modules')
-rw-r--r--tests/projects/c++/modules/add_move_remove_module/test.lua10
-rw-r--r--tests/projects/c++/modules/hello_with_pch/test.lua10
-rw-r--r--tests/projects/c++/modules/install_with_false_default/test.lua10
-rw-r--r--tests/projects/c++/modules/multiple_runtimes/test.lua6
-rw-r--r--tests/projects/c++/modules/test_base.lua38
-rw-r--r--tests/projects/c++/modules/test_culling.lua10
-rw-r--r--tests/projects/c++/modules/test_dependency_scanner.lua10
-rw-r--r--tests/projects/c++/modules/test_duplicate_modules.lua10
-rw-r--r--tests/projects/c++/modules/test_headerunits.lua5
-rw-r--r--tests/projects/c++/modules/test_partitions.lua6
-rw-r--r--tests/projects/c++/modules/test_stdmodules.lua6
-rw-r--r--tests/projects/c++/modules/test_xmake_test.lua10
-rw-r--r--tests/projects/c++/modules/test_xmake_test_stdmodules.lua6
13 files changed, 63 insertions, 74 deletions
diff --git a/tests/projects/c++/modules/add_move_remove_module/test.lua b/tests/projects/c++/modules/add_move_remove_module/test.lua
index ad8c4833b..dbaeedbb2 100644
--- a/tests/projects/c++/modules/add_move_remove_module/test.lua
+++ b/tests/projects/c++/modules/add_move_remove_module/test.lua
@@ -1,10 +1,6 @@
inherit(".test_base")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
-
function _build(_)
local flags = ""
if ci_is_running() then
@@ -21,8 +17,8 @@ function _build(_)
end
function main(_)
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER, build = _build}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER, build = _build}
- local msvc_options = {version = MSVC_MIN_VER, build = _build}
+ local clang_options = {compiler = "clang", version = clang_min_ver(), build = _build}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver(), build = _build}
+ local msvc_options = {version = msvc_min_ver(), build = _build}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/hello_with_pch/test.lua b/tests/projects/c++/modules/hello_with_pch/test.lua
index 7cb5dca01..bba1f8ffd 100644
--- a/tests/projects/c++/modules/hello_with_pch/test.lua
+++ b/tests/projects/c++/modules/hello_with_pch/test.lua
@@ -1,13 +1,9 @@
inherit(".test_base")
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
-
function main(_)
-- clang-cl doesn't support mixing pch and C++ module atm
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER, disable_clang_cl = true}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER}
- local msvc_options = {version = MSVC_MIN_VER}
+ local clang_options = {compiler = "clang", version = clang_min_ver(), disable_clang_cl = true}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver()}
+ local msvc_options = {version = msvc_min_ver()}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/install_with_false_default/test.lua b/tests/projects/c++/modules/install_with_false_default/test.lua
index 14ef968af..482c5279a 100644
--- a/tests/projects/c++/modules/install_with_false_default/test.lua
+++ b/tests/projects/c++/modules/install_with_false_default/test.lua
@@ -1,10 +1,6 @@
inherit(".test_base")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
-
function _build(check_outdata)
local flags = ""
if ci_is_running() then
@@ -16,8 +12,8 @@ function _build(check_outdata)
end
function main(_)
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER, build = _build}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER, build = _build}
- local msvc_options = {version = MSVC_MIN_VER, build = _build}
+ local clang_options = {compiler = "clang", version = clang_min_ver(), build = _build}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver(), build = _build}
+ local msvc_options = {version = msvc_min_ver(), build = _build}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/multiple_runtimes/test.lua b/tests/projects/c++/modules/multiple_runtimes/test.lua
index ad2585efa..4f9773dd8 100644
--- a/tests/projects/c++/modules/multiple_runtimes/test.lua
+++ b/tests/projects/c++/modules/multiple_runtimes/test.lua
@@ -3,9 +3,9 @@ import("core.base.semver")
import("core.tool.toolchain")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = "19"
-GCC_MIN_VER = "15"
-MSVC_MIN_VER = "14.35"
+local CLANG_MIN_VER = "19"
+local GCC_MIN_VER = "15"
+local MSVC_MIN_VER = "14.35"
function _check_tool_version(name, min_ver)
local tool = find_tool(name, {version = true})
diff --git a/tests/projects/c++/modules/test_base.lua b/tests/projects/c++/modules/test_base.lua
index 6116b36e6..372229695 100644
--- a/tests/projects/c++/modules/test_base.lua
+++ b/tests/projects/c++/modules/test_base.lua
@@ -3,10 +3,28 @@ import("core.base.semver")
import("core.tool.toolchain")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-CLANG_CL_MIN_VER = "19"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
+-- default minimum compiler versions for C++ modules support
+-- sub-tests can override these with local variables before calling run_tests()
+local _CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
+local _CLANG_CL_MIN_VER = "19"
+local _GCC_MIN_VER = "11"
+local _MSVC_MIN_VER = "14.29"
+
+function clang_min_ver()
+ return _CLANG_MIN_VER
+end
+
+function clang_cl_min_ver()
+ return _CLANG_CL_MIN_VER
+end
+
+function gcc_min_ver()
+ return _GCC_MIN_VER
+end
+
+function msvc_min_ver()
+ return _MSVC_MIN_VER
+end
function _build(check_outdata)
local flags = ""
@@ -39,11 +57,11 @@ function can_build()
return true
elseif is_host("linux") then
local gcc = find_tool("gcc", {version = true})
- if gcc and gcc.version and semver.compare(gcc.version, GCC_MIN_VER) >= 0 then
+ if gcc and gcc.version and semver.compare(gcc.version, gcc_min_ver()) >= 0 then
return true
end
local clang = find_tool("clang", {version = true})
- if clang and clang.version and semver.compare(clang.version, CLANG_MIN_VER) >= 0 then
+ if clang and clang.version and semver.compare(clang.version, clang_min_ver()) >= 0 then
return true
end
end
@@ -132,7 +150,7 @@ function run_tests(clang_options, gcc_options, msvc_options)
if not clang_options.disable_clang_cl then
local clang_cl_options = table.clone(clang_options)
clang_cl_options.compiler = "clang-cl"
- clang_cl_options.version = CLANG_CL_MIN_VER
+ clang_cl_options.version = clang_cl_min_ver()
build_tests("clang-cl", clang_cl_options)
build_tests("clang-cl", table.join(clang_options, {two_phases = false}))
end
@@ -204,8 +222,8 @@ function run_tests(clang_options, gcc_options, msvc_options)
end
function main(_)
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER}
- local msvc_options = {version = MSVC_MIN_VER}
+ local clang_options = {compiler = "clang", version = clang_min_ver()}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver()}
+ local msvc_options = {version = msvc_min_ver()}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/test_culling.lua b/tests/projects/c++/modules/test_culling.lua
index a2b046e74..aea234eab 100644
--- a/tests/projects/c++/modules/test_culling.lua
+++ b/tests/projects/c++/modules/test_culling.lua
@@ -1,13 +1,9 @@
inherit("test_base")
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
-
function main(_)
local check_outdata = {str = "culled", format_string = "Modules culling does not work"}
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER, check_outdata = check_outdata}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER, check_outdata = check_outdata}
- local msvc_options = {version = MSVC_MIN_VER, check_outdata = check_outdata}
+ local clang_options = {compiler = "clang", version = clang_min_ver(), check_outdata = check_outdata}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver(), check_outdata = check_outdata}
+ local msvc_options = {version = msvc_min_ver(), check_outdata = check_outdata}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/test_dependency_scanner.lua b/tests/projects/c++/modules/test_dependency_scanner.lua
index 450a53084..9bcf0f693 100644
--- a/tests/projects/c++/modules/test_dependency_scanner.lua
+++ b/tests/projects/c++/modules/test_dependency_scanner.lua
@@ -1,10 +1,6 @@
inherit("test_base")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
-
function _build(platform, toolchain_name, runtimes, policies, flags)
local flags = ""
if ci_is_running() then
@@ -21,8 +17,8 @@ function _build(platform, toolchain_name, runtimes, policies, flags)
end
function main(t)
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER, flags = {"--foo=y"}, after_build = _build}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER, flags = {"--foo=y"}, after_build = _build}
- local msvc_options = {version = MSVC_MIN_VER, flags = {"--foo=y"}, after_build = _build}
+ local clang_options = {compiler = "clang", version = clang_min_ver(), flags = {"--foo=y"}, after_build = _build}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver(), flags = {"--foo=y"}, after_build = _build}
+ local msvc_options = {version = msvc_min_ver(), flags = {"--foo=y"}, after_build = _build}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/test_duplicate_modules.lua b/tests/projects/c++/modules/test_duplicate_modules.lua
index 98a27d739..7d66c3a8a 100644
--- a/tests/projects/c++/modules/test_duplicate_modules.lua
+++ b/tests/projects/c++/modules/test_duplicate_modules.lua
@@ -1,10 +1,6 @@
inherit("test_base")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
-
function _build()
local flags = ""
if ci_is_running() then
@@ -26,8 +22,8 @@ function _build()
end
function main(_)
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER, build = _build}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER, build = _build}
- local msvc_options = {version = MSVC_MIN_VER, build = _build}
+ local clang_options = {compiler = "clang", version = clang_min_ver(), build = _build}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver(), build = _build}
+ local msvc_options = {version = msvc_min_ver(), build = _build}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/test_headerunits.lua b/tests/projects/c++/modules/test_headerunits.lua
index 610838312..e3bf83f83 100644
--- a/tests/projects/c++/modules/test_headerunits.lua
+++ b/tests/projects/c++/modules/test_headerunits.lua
@@ -1,10 +1,9 @@
inherit("test_base")
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.30"
+local MSVC_MIN_VER = "14.30"
function main(t)
- local gcc_options = {fallbackscanner = true, compiler = "gcc", version = GCC_MIN_VER}
+ local gcc_options = {fallbackscanner = true, compiler = "gcc", version = gcc_min_ver()}
-- gcc/arm64: internal compiler error: in core_vals, at cp/module.cc:6108
-- on windows, mingw modulemapper doesn't handle headeunit path correctly, but it's working with mingw on macOS / Linux
if os.arch() == "arm64" or is_subhost("msys") then
diff --git a/tests/projects/c++/modules/test_partitions.lua b/tests/projects/c++/modules/test_partitions.lua
index 38500991f..42e30fb35 100644
--- a/tests/projects/c++/modules/test_partitions.lua
+++ b/tests/projects/c++/modules/test_partitions.lua
@@ -1,8 +1,8 @@
inherit("test_base")
-CLANG_MIN_VER = is_subhost("windows") and "19" or "18"
-GCC_MIN_VER = "13"
-MSVC_MIN_VER = "14.30"
+local CLANG_MIN_VER = is_subhost("windows") and "19" or "18"
+local GCC_MIN_VER = "13"
+local MSVC_MIN_VER = "14.30"
function main(_)
local clang_options = {compiler = "clang", version = CLANG_MIN_VER}
diff --git a/tests/projects/c++/modules/test_stdmodules.lua b/tests/projects/c++/modules/test_stdmodules.lua
index 291494b38..e7d6591a7 100644
--- a/tests/projects/c++/modules/test_stdmodules.lua
+++ b/tests/projects/c++/modules/test_stdmodules.lua
@@ -1,8 +1,8 @@
inherit("test_base")
-CLANG_MIN_VER = "19"
-GCC_MIN_VER = "15"
-MSVC_MIN_VER = "14.35"
+local CLANG_MIN_VER = "19"
+local GCC_MIN_VER = "15"
+local MSVC_MIN_VER = "14.35"
function main(_)
local clang_options = {stdmodule = true, compiler = "clang", version = CLANG_MIN_VER}
diff --git a/tests/projects/c++/modules/test_xmake_test.lua b/tests/projects/c++/modules/test_xmake_test.lua
index 2d0b0a2d1..f0a2c9872 100644
--- a/tests/projects/c++/modules/test_xmake_test.lua
+++ b/tests/projects/c++/modules/test_xmake_test.lua
@@ -1,10 +1,6 @@
inherit("test_base")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = is_subhost("windows") and "19" or "17"
-GCC_MIN_VER = "11"
-MSVC_MIN_VER = "14.29"
-
function run_xmake_test(...)
local flags = ""
if ci_is_running() then
@@ -15,8 +11,8 @@ function run_xmake_test(...)
end
function main(t)
- local clang_options = {compiler = "clang", version = CLANG_MIN_VER, after_build = run_xmake_test}
- local gcc_options = {compiler = "gcc", version = GCC_MIN_VER, after_build = run_xmake_test}
- local msvc_options = {version = MSVC_MIN_VER, after_build = run_xmake_test}
+ local clang_options = {compiler = "clang", version = clang_min_ver(), after_build = run_xmake_test}
+ local gcc_options = {compiler = "gcc", version = gcc_min_ver(), after_build = run_xmake_test}
+ local msvc_options = {version = msvc_min_ver(), after_build = run_xmake_test}
run_tests(clang_options, gcc_options, msvc_options)
end
diff --git a/tests/projects/c++/modules/test_xmake_test_stdmodules.lua b/tests/projects/c++/modules/test_xmake_test_stdmodules.lua
index 0e95de5bd..ab28eaf86 100644
--- a/tests/projects/c++/modules/test_xmake_test_stdmodules.lua
+++ b/tests/projects/c++/modules/test_xmake_test_stdmodules.lua
@@ -1,9 +1,9 @@
inherit("test_base")
import("utils.ci.is_running", {alias = "ci_is_running"})
-CLANG_MIN_VER = "19"
-GCC_MIN_VER = "15"
-MSVC_MIN_VER = "14.35"
+local CLANG_MIN_VER = "19"
+local GCC_MIN_VER = "15"
+local MSVC_MIN_VER = "14.35"
function run_xmake_test(...)
local flags = ""