Browse Source

Merge topic 'ctest-test-changing-labels' into release-3.21

26170ea306 CTest: Reset multi-options to persistent multi-options

Acked-by: Kitware Robot <[email protected]>
Merge-request: !6403
Brad King 4 years ago
parent
commit
5f1afff9f7

+ 2 - 4
Source/CTest/cmCTestGenericHandler.cxx

@@ -68,10 +68,8 @@ void cmCTestGenericHandler::Initialize()
 {
   this->AppendXML = false;
   this->TestLoad = 0;
-  this->Options.clear();
-  for (auto const& po : this->PersistentOptions) {
-    this->Options[po.first] = po.second;
-  }
+  this->Options = this->PersistentOptions;
+  this->MultiOptions = this->PersistentMultiOptions;
 }
 
 const char* cmCTestGenericHandler::GetOption(const std::string& op)

+ 13 - 0
Tests/RunCMake/ctest_test/RunCMakeTest.cmake

@@ -181,3 +181,16 @@ add_test(
   run_ctest(TestCompletionStatus)
 endfunction()
 run_completion_status()
+
+# Verify that running ctest_test() multiple times with different label arguments
+# doesn't break.
+function(run_changing_labels)
+  set(CASE_CMAKELISTS_SUFFIX_CODE [[
+add_test(NAME a COMMAND ${CMAKE_COMMAND} -E true)
+set_property(TEST a PROPERTY LABELS a)
+add_test(NAME b COMMAND ${CMAKE_COMMAND} -E true)
+set_property(TEST b PROPERTY LABELS b)
+  ]])
+  run_ctest(TestChangingLabels)
+endfunction()
+run_changing_labels()

+ 6 - 1
Tests/RunCMake/ctest_test/test.cmake.in

@@ -15,4 +15,9 @@ set(ctest_test_args "@CASE_CTEST_TEST_ARGS@")
 ctest_start(Experimental)
 ctest_configure()
 ctest_build()
-ctest_test(${ctest_test_args})
+if("@CASE_NAME@" STREQUAL "TestChangingLabels")
+  ctest_test(${ctest_test_args} INCLUDE_LABEL "^a$")
+  ctest_test(${ctest_test_args} INCLUDE_LABEL "^b$")
+else()
+  ctest_test(${ctest_test_args})
+endif()