RunCMake/CXXModulesCompile: split into 3 variants

The test was taking too long to run on all CI machines, so split into
three "variant" tests which take roughly the same amount of time.
This commit is contained in:
Ben Boeckel
2026-05-21 23:11:21 -04:00
parent 06cc1d04d8
commit 93449833ff
2 changed files with 46 additions and 6 deletions
+15 -6
View File
@@ -856,13 +856,22 @@ set_property(TEST RunCMake.DependencyGraph APPEND PROPERTY LABELS "Fortran")
add_RunCMake_test(CXXModules
-DCMake_TEST_CXX_STDLIB_MODULES_JSON=${CMake_TEST_CXX_STDLIB_MODULES_JSON}
)
add_RunCMake_test(CXXModulesCompile
-DCMake_TEST_MODULE_COMPILATION=${CMake_TEST_MODULE_COMPILATION}
-DCMake_TEST_MODULE_COMPILATION_RULES=${CMake_TEST_MODULE_COMPILATION_RULES}
-DCMake_TEST_CXX_STDLIB_MODULES_JSON=${CMake_TEST_CXX_STDLIB_MODULES_JSON}
)
set_property(TEST RunCMake.CXXModules RunCMake.CXXModulesCompile APPEND
set_property(TEST RunCMake.CXXModules APPEND
PROPERTY LABELS "CXXModules")
function (add_RunCMake_CXXModulesCompile_test variant)
add_RunCMake_test(CXXModulesCompile${variant}
TEST_DIR CXXModulesCompile
-DCMake_TEST_MODULE_VARIANT=${variant}
-DCMake_TEST_MODULE_COMPILATION=${CMake_TEST_MODULE_COMPILATION}
-DCMake_TEST_MODULE_COMPILATION_RULES=${CMake_TEST_MODULE_COMPILATION_RULES}
-DCMake_TEST_CXX_STDLIB_MODULES_JSON=${CMake_TEST_CXX_STDLIB_MODULES_JSON}
)
set_property(TEST RunCMake.CXXModulesCompile${variant} APPEND
PROPERTY LABELS "CXXModules")
endfunction ()
add_RunCMake_CXXModulesCompile_test(BuildBehavior)
add_RunCMake_CXXModulesCompile_test(BuildImportExport)
add_RunCMake_CXXModulesCompile_test(Install)
# ctresalloc links against CMakeLib and CTestLib, which means it can't be built
# if CMake_TEST_EXTERNAL_CMAKE is activated (the compiler might be different.)
@@ -76,6 +76,35 @@ function (run_cxx_module_test directory)
list(POP_FRONT ARGN test_name)
endif ()
# Split the test cases into two suites: those for builds and those for
# installs.
set(is_for_install 0)
if (RunCMake_CXXModules_INSTALL OR
RunCMake_CXXModules_NEEDS_INSTALL OR
test_name MATCHES "install")
set(is_for_install 1)
endif ()
# Build variants
if (CMake_TEST_MODULE_VARIANT MATCHES "Build")
if (is_for_install)
return ()
endif ()
# Further split the test cases into those for import/export and "behavior".
set(is_import_export 0)
if (test_name MATCHES "^(imp|exp)-")
set(is_import_export 1)
endif ()
if (CMake_TEST_MODULE_VARIANT STREQUAL "BuildBehavior" AND is_import_export)
return ()
endif ()
if (CMake_TEST_MODULE_VARIANT STREQUAL "BuildImportExport" AND NOT is_import_export)
return ()
endif ()
endif ()
if (CMake_TEST_MODULE_VARIANT STREQUAL "Install" AND NOT is_for_install)
return ()
endif ()
set(RunCMake_TEST_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/${directory}")
set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${test_name}-build")
@@ -383,4 +412,6 @@ set(RunCMake_CXXModules_INSTALL 0)
set(test_set mods-from-ninja)
run_cxx_module_test_ninja("exp-${test_set}")
set(RunCMake_CXXModules_NEEDS_INSTALL 1)
run_cxx_module_test(imp-mods "imp-${test_set}" "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/exp-${test_set}-ninja-install" -DFROM_NINJA=1)
unset(RunCMake_CXXModules_NEEDS_INSTALL)