diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 75c61226a9..c6978e1214 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -882,13 +882,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.) diff --git a/Tests/RunCMake/CXXModulesCompile/RunCMakeTest.cmake b/Tests/RunCMake/CXXModulesCompile/RunCMakeTest.cmake index 9e9d00a1f6..7972ead2fd 100644 --- a/Tests/RunCMake/CXXModulesCompile/RunCMakeTest.cmake +++ b/Tests/RunCMake/CXXModulesCompile/RunCMakeTest.cmake @@ -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") @@ -170,8 +199,8 @@ if ("named" IN_LIST CMake_TEST_MODULE_COMPILATION) run_cxx_module_test(object-library) run_cxx_module_test(generated) run_cxx_module_test(deep-chain) - run_cxx_module_test(non-trivial-collation-order) - run_cxx_module_test(non-trivial-collation-order-randomized) + run_cxx_module_test(non-triv-coll) + run_cxx_module_test(non-triv-coll-rando) run_cxx_module_test(duplicate) set(RunCMake_CXXModules_NO_TEST 1) if ("collation" IN_LIST CMake_TEST_MODULE_COMPILATION) @@ -387,4 +416,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) diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order-randomized/CMakeLists.txt b/Tests/RunCMake/CXXModulesCompile/non-triv-coll-rando/CMakeLists.txt similarity index 58% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order-randomized/CMakeLists.txt rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll-rando/CMakeLists.txt index 4e1e7af1ee..68fe131d4d 100644 --- a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order-randomized/CMakeLists.txt +++ b/Tests/RunCMake/CXXModulesCompile/non-triv-coll-rando/CMakeLists.txt @@ -5,5 +5,5 @@ include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake") set(non_trivial_collation_order_randomized TRUE) -add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../non-trivial-collation-order/" - "${CMAKE_CURRENT_BINARY_DIR}/non-trivial-collation-order") +add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../non-triv-coll/" + "${CMAKE_CURRENT_BINARY_DIR}/non-triv-coll") diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/CMakeLists.txt b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/CMakeLists.txt similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/CMakeLists.txt rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/CMakeLists.txt diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/main.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/main.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/main.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/main.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod1.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod1.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod1.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod1.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod2.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod2.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod2.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod2.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod3.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod3.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod3.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod3.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod4.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod4.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod4.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod4.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod5.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod5.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod5.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod5.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod6.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod6.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod6.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod6.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod7.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod7.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/module_level/mod7.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/module_level/mod7.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl-non-partition.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl-non-partition.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl-non-partition.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl-non-partition.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl1.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl1.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl1.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl1.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl2.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl2.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl2.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl2.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl3.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl3.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl3.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl3.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl4.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl4.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl4.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl4.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl5.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl5.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl5.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl5.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl6.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl6.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl6.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl6.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl7.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl7.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/impl7.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/impl7.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf1.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf1.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf1.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf1.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf2.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf2.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf2.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf2.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf3.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf3.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf3.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf3.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf4.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf4.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf4.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf4.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf5.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf5.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf5.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf5.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf6.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf6.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf6.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf6.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf7.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf7.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/intf7.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/intf7.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/partition_level.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/partition_level.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/partition_level/partition_level.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/partition_level/partition_level.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target1.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target1.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target1.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target1.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target2.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target2.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target2.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target2.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target3.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target3.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target3.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target3.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target4.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target4.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target4.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target4.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target5.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target5.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target5.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target5.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target6.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target6.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target6.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target6.cxx diff --git a/Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target7.cxx b/Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target7.cxx similarity index 100% rename from Tests/RunCMake/CXXModulesCompile/non-trivial-collation-order/target_level/target7.cxx rename to Tests/RunCMake/CXXModulesCompile/non-triv-coll/target_level/target7.cxx