mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user