diff options
author | Brad King <brad.king@kitware.com> | 2014-08-18 15:21:55 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2014-08-18 15:21:55 (GMT) |
commit | e7dda7b9b7373dc823977766d0947a4ca28845cd (patch) | |
tree | f63fc18d0ff729134934c0e8ee800496a497c45a | |
parent | de547ca5c3053293d144b3c8b133f701d4b81150 (diff) | |
parent | 653529ce55a9c33fa7378708793caac92a857794 (diff) | |
download | CMake-e7dda7b9b7373dc823977766d0947a4ca28845cd.zip CMake-e7dda7b9b7373dc823977766d0947a4ca28845cd.tar.gz CMake-e7dda7b9b7373dc823977766d0947a4ca28845cd.tar.bz2 |
Merge topic 'ctest_update_status_only'
653529ce CTest: Allow / to be in the build name, and be consistent with the build name
39b5df2f ctest_update: Add CTEST_UPDATE_VERSION_ONLY option to only note the version
-rw-r--r-- | Help/manual/cmake-variables.7.rst | 1 | ||||
-rw-r--r-- | Help/manual/ctest.1.rst | 9 | ||||
-rw-r--r-- | Help/variable/CTEST_UPDATE_VERSION_ONLY.rst | 5 | ||||
-rw-r--r-- | Modules/DartConfiguration.tcl.in | 3 | ||||
-rw-r--r-- | Source/CTest/cmCTestSubmitHandler.cxx | 4 | ||||
-rw-r--r-- | Source/CTest/cmCTestUpdateCommand.cxx | 2 | ||||
-rw-r--r-- | Source/CTest/cmCTestUpdateHandler.cxx | 5 | ||||
-rw-r--r-- | Source/CTest/cmCTestUploadHandler.cxx | 5 | ||||
-rw-r--r-- | Source/CTest/cmCTestVC.cxx | 15 | ||||
-rw-r--r-- | Source/cmCTest.cxx | 14 | ||||
-rw-r--r-- | Tests/CTestUpdateCommon.cmake | 48 | ||||
-rw-r--r-- | Tests/CTestUpdateGIT.cmake.in | 17 |
12 files changed, 107 insertions, 21 deletions
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index e622784..2124f7d 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -362,6 +362,7 @@ Variables for CTest /variable/CTEST_TRIGGER_SITE /variable/CTEST_UPDATE_COMMAND /variable/CTEST_UPDATE_OPTIONS + /variable/CTEST_UPDATE_VERSION_ONLY /variable/CTEST_USE_LAUNCHERS Variables for CPack diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index a57a8f0..52e4beb 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -668,6 +668,15 @@ Configuration settings to specify the version control tool include: * :module:`CTest` module variable: ``UPDATE_TYPE`` if set, else ``CTEST_UPDATE_TYPE`` +``UpdateVersionOnly`` + Specify that you want the version control update command to only + discover the current version that is checked out, and not to update + to a different version. + + * `CTest Script`_ variable: :variable:`CTEST_UPDATE_VERSION_ONLY` + + + Additional configuration settings include: ``NightlyStartTime`` diff --git a/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst b/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst new file mode 100644 index 0000000..e646e6e --- /dev/null +++ b/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst @@ -0,0 +1,5 @@ +CTEST_UPDATE_VERSION_ONLY +------------------------- + +Specify the CTest ``UpdateVersionOnly`` setting +in a :manual:`ctest(1)` dashboard client script. diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 0420882..86049d0 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -37,6 +37,9 @@ ConfigureCommand: "@CMAKE_COMMAND@" "@PROJECT_SOURCE_DIR@" MakeCommand: @MAKECOMMAND@ DefaultCTestConfigurationType: @DEFAULT_CTEST_CONFIGURATION_TYPE@ +# version control +UpdateVersionOnly: @CTEST_UPDATE_VERSION_ONLY@ + # CVS options # Default is "-d -P -A" CVSCommand: @CVSCOMMAND@ diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index 109905c..06fcb75 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -1479,8 +1479,10 @@ int cmCTestSubmitHandler::ProcessHandler() //---------------------------------------------------------------------------- std::string cmCTestSubmitHandler::GetSubmitResultsPrefix() { + std::string buildname = cmCTest::SafeBuildIdField( + this->CTest->GetCTestConfiguration("BuildName")); std::string name = this->CTest->GetCTestConfiguration("Site") + - "___" + this->CTest->GetCTestConfiguration("BuildName") + + "___" + buildname + "___" + this->CTest->GetCurrentTag() + "-" + this->CTest->GetTestModelString() + "___XML___"; return name; diff --git a/Source/CTest/cmCTestUpdateCommand.cxx b/Source/CTest/cmCTestUpdateCommand.cxx index 5408a8a..f87466d 100644 --- a/Source/CTest/cmCTestUpdateCommand.cxx +++ b/Source/CTest/cmCTestUpdateCommand.cxx @@ -56,6 +56,8 @@ cmCTestGenericHandler* cmCTestUpdateCommand::InitializeHandler() this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "GITUpdateCustom", "CTEST_GIT_UPDATE_CUSTOM"); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "UpdateVersionOnly", "CTEST_UPDATE_VERSION_ONLY"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "HGCommand", "CTEST_HG_COMMAND"); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "HGUpdateOptions", "CTEST_HG_UPDATE_OPTIONS"); diff --git a/Source/CTest/cmCTestUpdateHandler.cxx b/Source/CTest/cmCTestUpdateHandler.cxx index fda61ea..68f5fe1 100644 --- a/Source/CTest/cmCTestUpdateHandler.cxx +++ b/Source/CTest/cmCTestUpdateHandler.cxx @@ -258,12 +258,13 @@ int cmCTestUpdateHandler::ProcessHandler() double elapsed_time_start = cmSystemTools::GetTime(); bool updated = vc->Update(); - + std::string buildname = cmCTest::SafeBuildIdField( + this->CTest->GetCTestConfiguration("BuildName")); os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<Update mode=\"Client\" Generator=\"ctest-" << cmVersion::GetCMakeVersion() << "\">\n" << "\t<Site>" << this->CTest->GetCTestConfiguration("Site") << "</Site>\n" - << "\t<BuildName>" << this->CTest->GetCTestConfiguration("BuildName") + << "\t<BuildName>" << buildname << "</BuildName>\n" << "\t<BuildStamp>" << this->CTest->GetCurrentTag() << "-" << this->CTest->GetTestModelString() << "</BuildStamp>" << std::endl; diff --git a/Source/CTest/cmCTestUploadHandler.cxx b/Source/CTest/cmCTestUploadHandler.cxx index 4c3f81b..e33c387 100644 --- a/Source/CTest/cmCTestUploadHandler.cxx +++ b/Source/CTest/cmCTestUploadHandler.cxx @@ -44,14 +44,15 @@ int cmCTestUploadHandler::ProcessHandler() "Cannot open Upload.xml file" << std::endl); return -1; } - + std::string buildname = cmCTest::SafeBuildIdField( + this->CTest->GetCTestConfiguration("BuildName")); cmCTest::SetOfStrings::const_iterator it; ofs << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<?xml-stylesheet type=\"text/xsl\" " "href=\"Dart/Source/Server/XSL/Build.xsl " "<file:///Dart/Source/Server/XSL/Build.xsl> \"?>\n" << "<Site BuildName=\"" - << this->CTest->GetCTestConfiguration("BuildName") + << buildname << "\" BuildStamp=\"" << this->CTest->GetCurrentTag() << "-" << this->CTest->GetTestModelString() << "\" Name=\"" diff --git a/Source/CTest/cmCTestVC.cxx b/Source/CTest/cmCTestVC.cxx index f89fa2b..15f796f 100644 --- a/Source/CTest/cmCTestVC.cxx +++ b/Source/CTest/cmCTestVC.cxx @@ -166,10 +166,17 @@ void cmCTestVC::CleanupImpl() //---------------------------------------------------------------------------- bool cmCTestVC::Update() { - this->NoteOldRevision(); - this->Log << "--- Begin Update ---\n"; - bool result = this->UpdateImpl(); - this->Log << "--- End Update ---\n"; + bool result = true; + // if update version only is on then do not actually update, + // just note the current version and finish + if(!cmSystemTools::IsOn( + this->CTest->GetCTestConfiguration("UpdateVersionOnly").c_str())) + { + this->NoteOldRevision(); + this->Log << "--- Begin Update ---\n"; + result = this->UpdateImpl(); + this->Log << "--- End Update ---\n"; + } this->NoteNewRevision(); return result; } diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index b28f3b5..a7905a4 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -488,9 +488,11 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command) { cmCTestLog(this, DEBUG, "Here: " << __LINE__ << std::endl); cmCTestLog(this, OUTPUT, - " Site: " << this->GetCTestConfiguration("Site") << std::endl - << " Build name: " << this->GetCTestConfiguration("BuildName") - << std::endl); + " Site: " << this->GetCTestConfiguration("Site") << std::endl + << " Build name: " + << cmCTest::SafeBuildIdField( + this->GetCTestConfiguration("BuildName")) + << std::endl); cmCTestLog(this, DEBUG, "Produce XML is on" << std::endl); if ( this->TestModel == cmCTest::NIGHTLY && this->GetCTestConfiguration("NightlyStartTime").empty() ) @@ -1441,7 +1443,7 @@ std::string cmCTest::SafeBuildIdField(const std::string& value) // Disallow non-filename and non-space whitespace characters. // If they occur, replace them with "" // - const char *disallowed = "\\/:*?\"<>|\n\r\t\f\v"; + const char *disallowed = "\\:*?\"<>|\n\r\t\f\v"; if (safevalue.find_first_of(disallowed) != value.npos) { @@ -1582,12 +1584,14 @@ void cmCTest::EndXML(std::ostream& ostr) int cmCTest::GenerateCTestNotesOutput(std::ostream& os, const cmCTest::VectorOfStrings& files) { + std::string buildname = cmCTest::SafeBuildIdField( + this->GetCTestConfiguration("BuildName")); cmCTest::VectorOfStrings::const_iterator it; os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<?xml-stylesheet type=\"text/xsl\" " "href=\"Dart/Source/Server/XSL/Build.xsl " "<file:///Dart/Source/Server/XSL/Build.xsl> \"?>\n" - << "<Site BuildName=\"" << this->GetCTestConfiguration("BuildName") + << "<Site BuildName=\"" << buildname << "\" BuildStamp=\"" << this->CurrentTag << "-" << this->GetTestModelString() << "\" Name=\"" << this->GetCTestConfiguration("Site") << "\" Generator=\"ctest" diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake index 857c6f5..97153f0 100644 --- a/Tests/CTestUpdateCommon.cmake +++ b/Tests/CTestUpdateCommon.cmake @@ -219,6 +219,36 @@ function(run_dashboard_command_line bin_dir) endfunction() #----------------------------------------------------------------------------- +# Function to find the Update.xml file and make sure +# it only has the Revision in it and no updates +function(check_no_update bin_dir) + set(PATTERN ${TOP}/${bin_dir}/Testing/*/Update.xml) + file(GLOB UPDATE_XML_FILE RELATIVE ${TOP} ${PATTERN}) + string(REGEX REPLACE "//Update.xml$" "/Update.xml" + UPDATE_XML_FILE "${UPDATE_XML_FILE}") + message(" found ${UPDATE_XML_FILE}") + set(rev_regex "Revision|PriorRevision") + file(STRINGS ${TOP}/${UPDATE_XML_FILE} UPDATE_XML_REVISIONS + REGEX "^\t<(${rev_regex})>[^<\n]+</(${rev_regex})>$" + ) + set(found_revisons FALSE) + foreach(r IN LISTS UPDATE_XML_REVISIONS) + if("${r}" MATCHES "PriorRevision") + message(FATAL_ERROR "Found PriorRevision in no update test") + endif() + if("${r}" MATCHES "<Revision>") + set(found_revisons TRUE) + endif() + endforeach() + if(found_revisons) + message(" found <Revision> in no update test") + else() + message(FATAL_ERROR " missing <Revision> in no update test") + endif() +endfunction() + + +#----------------------------------------------------------------------------- # Function to run the dashboard through a script function(run_dashboard_script bin_dir) run_child( @@ -228,13 +258,17 @@ function(run_dashboard_script bin_dir) # Verify the updates reported by CTest. list(APPEND UPDATE_MAYBE Updated{subdir} Updated{CTestConfig.cmake}) - check_updates(${bin_dir} - Updated{foo.txt} - Updated{bar.txt} - Updated{zot.txt} - Updated{subdir/foo.txt} - Updated{subdir/bar.txt} - ) + if(NO_UPDATE) + check_no_update(${bin_dir}) + else() + check_updates(${bin_dir} + Updated{foo.txt} + Updated{bar.txt} + Updated{zot.txt} + Updated{subdir/foo.txt} + Updated{subdir/bar.txt} + ) + endif() endfunction() #----------------------------------------------------------------------------- diff --git a/Tests/CTestUpdateGIT.cmake.in b/Tests/CTestUpdateGIT.cmake.in index f6939de..41b732b 100644 --- a/Tests/CTestUpdateGIT.cmake.in +++ b/Tests/CTestUpdateGIT.cmake.in @@ -317,3 +317,20 @@ set(CTEST_GIT_UPDATE_CUSTOM \${CTEST_GIT_COMMAND} pull origin master) # Run the dashboard script with CTest. run_dashboard_script(dash-binary-custom) + + +rewind_source(dash-source) + +#----------------------------------------------------------------------------- +# Test no update with a dashboard script. +message("Running CTest Dashboard Script (No update)...") + +create_dashboard_script(dash-binary-no-update + "# git command configuration +set(CTEST_GIT_COMMAND \"${GIT}\") +set(CTEST_UPDATE_VERSION_ONLY TRUE) +") + +# Run the dashboard script with CTest. +set(NO_UPDATE 1) +run_dashboard_script(dash-binary-no-update) |