diff options
author | Brad King <brad.king@kitware.com> | 2015-07-17 14:36:17 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-07-17 14:36:17 (GMT) |
commit | a5412fbab45c9386f95fba3567e38c7b1cf8308d (patch) | |
tree | a1d64dae4636cc5d9d96a2f6914fc42f6bd79e68 | |
parent | 536b6c7519e221573cdf96db13b9d72b65c80b0b (diff) | |
parent | 601ff0ec55517bc2a80e9a8cc2340f1c18b93490 (diff) | |
download | CMake-a5412fbab45c9386f95fba3567e38c7b1cf8308d.zip CMake-a5412fbab45c9386f95fba3567e38c7b1cf8308d.tar.gz CMake-a5412fbab45c9386f95fba3567e38c7b1cf8308d.tar.bz2 |
Merge topic 'ctest-change-id'
601ff0ec CTest: Optionally add a ChangeId attribute on XML Site tags
-rw-r--r-- | Help/manual/cmake-variables.7.rst | 1 | ||||
-rw-r--r-- | Help/variable/CTEST_CHANGE_ID.rst | 9 | ||||
-rw-r--r-- | Source/CTest/cmCTestHandlerCommand.cxx | 6 | ||||
-rw-r--r-- | Source/cmCTest.cxx | 7 | ||||
-rw-r--r-- | Tests/RunCMake/ctest_build/BuildChangeId-check.cmake | 12 | ||||
-rw-r--r-- | Tests/RunCMake/ctest_build/RunCMakeTest.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/ctest_test/RunCMakeTest.cmake | 10 | ||||
-rw-r--r-- | Tests/RunCMake/ctest_test/TestChangeId-check.cmake | 12 | ||||
-rw-r--r-- | Tests/RunCMake/ctest_test/test.cmake.in | 1 |
9 files changed, 67 insertions, 0 deletions
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 35a67c3..9066d97 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -365,6 +365,7 @@ Variables for CTest /variable/CTEST_BUILD_NAME /variable/CTEST_BZR_COMMAND /variable/CTEST_BZR_UPDATE_OPTIONS + /variable/CTEST_CHANGE_ID /variable/CTEST_CHECKOUT_COMMAND /variable/CTEST_CONFIGURATION_TYPE /variable/CTEST_CONFIGURE_COMMAND diff --git a/Help/variable/CTEST_CHANGE_ID.rst b/Help/variable/CTEST_CHANGE_ID.rst new file mode 100644 index 0000000..a423f49 --- /dev/null +++ b/Help/variable/CTEST_CHANGE_ID.rst @@ -0,0 +1,9 @@ +CTEST_CHANGE_ID +--------------- + +Specify the CTest ``ChangeId`` setting +in a :manual:`ctest(1)` dashboard client script. + +This setting allows CTest to pass arbitrary information about this +build up to CDash. One use of this feature is to allow CDash to +post comments on your pull request if anything goes wrong with your build. diff --git a/Source/CTest/cmCTestHandlerCommand.cxx b/Source/CTest/cmCTestHandlerCommand.cxx index 3003e8a..3579aee 100644 --- a/Source/CTest/cmCTestHandlerCommand.cxx +++ b/Source/CTest/cmCTestHandlerCommand.cxx @@ -109,6 +109,12 @@ bool cmCTestHandlerCommand this->Quiet); } + if(const char* changeId = + this->Makefile->GetDefinition("CTEST_CHANGE_ID")) + { + this->CTest->SetCTestConfiguration("ChangeId", changeId, this->Quiet); + } + cmCTestLog(this->CTest, DEBUG, "Initialize handler" << std::endl;); cmCTestGenericHandler* handler = this->InitializeHandler(); if ( !handler ) diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 5676dda..f65bd29 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1567,6 +1567,13 @@ void cmCTest::StartXML(cmXMLWriter& xml, bool append) xml.Attribute("LogicalProcessorsPerPhysical", info.GetLogicalProcessorsPerPhysical()); xml.Attribute("ProcessorClockFrequency", info.GetProcessorClockFrequency()); + + std::string changeId = this->GetCTestConfiguration("ChangeId"); + if(!changeId.empty()) + { + xml.Attribute("ChangeId", changeId); + } + this->AddSiteProperties(xml); } diff --git a/Tests/RunCMake/ctest_build/BuildChangeId-check.cmake b/Tests/RunCMake/ctest_build/BuildChangeId-check.cmake new file mode 100644 index 0000000..074801f --- /dev/null +++ b/Tests/RunCMake/ctest_build/BuildChangeId-check.cmake @@ -0,0 +1,12 @@ +file(GLOB build_xml_file "${RunCMake_TEST_BINARY_DIR}/Testing/*/Build.xml") +if(build_xml_file) + file(READ "${build_xml_file}" build_xml LIMIT 4096) + if(NOT build_xml MATCHES [[ChangeId="<>1"]]) + string(REPLACE "\n" "\n " build_xml " ${build_xml}") + set(RunCMake_TEST_FAILED + "Build.xml does not have expected ChangeId:\n${build_xml}" + ) + endif() +else() + set(RunCMake_TEST_FAILED "Build.xml not found") +endif() diff --git a/Tests/RunCMake/ctest_build/RunCMakeTest.cmake b/Tests/RunCMake/ctest_build/RunCMakeTest.cmake index c6f732c..324f25c 100644 --- a/Tests/RunCMake/ctest_build/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_build/RunCMakeTest.cmake @@ -31,3 +31,12 @@ endif() endif() endfunction() run_BuildFailure() + +function(run_BuildChangeId) + set(CASE_TEST_PREFIX_CODE [[ + set(CTEST_CHANGE_ID "<>1") + ]]) + + run_ctest(BuildChangeId) +endfunction() +run_BuildChangeId() diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index 21d0447..76dc143 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -49,3 +49,13 @@ set(CASE_CTEST_TEST_LOAD "ERR3") run_ctest_test(TestLoadOrder TEST_LOAD "ERR4") unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) +unset(CASE_CTEST_TEST_LOAD) + +function(run_TestChangeId) + set(CASE_TEST_PREFIX_CODE [[ + set(CTEST_CHANGE_ID "<>1") + ]]) + + run_ctest(TestChangeId) +endfunction() +run_TestChangeId() diff --git a/Tests/RunCMake/ctest_test/TestChangeId-check.cmake b/Tests/RunCMake/ctest_test/TestChangeId-check.cmake new file mode 100644 index 0000000..b9884f1 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestChangeId-check.cmake @@ -0,0 +1,12 @@ +file(GLOB test_xml_file "${RunCMake_TEST_BINARY_DIR}/Testing/*/Test.xml") +if(test_xml_file) + file(READ "${test_xml_file}" test_xml LIMIT 4096) + if(NOT test_xml MATCHES [[ChangeId="<>1"]]) + string(REPLACE "\n" "\n " test_xml " ${test_xml}") + set(RunCMake_TEST_FAILED + "Test.xml does not have expected ChangeId:\n${test_xml}" + ) + endif() +else() + set(RunCMake_TEST_FAILED "Test.xml not found") +endif() diff --git a/Tests/RunCMake/ctest_test/test.cmake.in b/Tests/RunCMake/ctest_test/test.cmake.in index a8de6a3..50b936d 100644 --- a/Tests/RunCMake/ctest_test/test.cmake.in +++ b/Tests/RunCMake/ctest_test/test.cmake.in @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 3.1) +@CASE_TEST_PREFIX_CODE@ set(CTEST_SITE "test-site") set(CTEST_BUILD_NAME "test-build-name") |