From 09e748c69a31e54ad4ceb16229f4caa987d61d3b Mon Sep 17 00:00:00 2001 From: Zach Mullen Date: Mon, 1 Mar 2010 11:00:23 -0500 Subject: [PATCH] Configurable path to CTest cost data file Allow the user to set the CMake variable CTEST_COST_DATA_FILE, which will be used to store the cost data from test runs. If not set, defaults to the original location in the build tree Testing/Temporary dir. --- Modules/DartConfiguration.tcl.in | 4 ++++ Source/CTest/cmCTestMultiProcessHandler.cxx | 8 +++----- Source/cmCTest.cxx | 11 +++++++++++ Source/cmCTest.h | 2 ++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index be2b691ee..8b51a938a 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -7,6 +7,9 @@ SourceDirectory: @PROJECT_SOURCE_DIR@ BuildDirectory: @PROJECT_BINARY_DIR@ +# Where to place the cost data store +CostDataFile: @CTEST_COST_DATA_FILE@ + # Site is something like machine.domain, i.e. pragmatic.crd Site: @SITE@ @@ -26,6 +29,7 @@ DropMethod: @DROP_METHOD@ TriggerSite: @TRIGGER_SITE@ ScpCommand: @SCPCOMMAND@ + # Dashboard start time NightlyStartTime: @NIGHTLY_START_TIME@ diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 02974a26f..31aff8b80 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -283,8 +283,7 @@ bool cmCTestMultiProcessHandler::CheckOutput() //--------------------------------------------------------- void cmCTestMultiProcessHandler::UpdateCostData() { - std::string fname = this->CTest->GetBinaryDir() - + "/Testing/Temporary/CTestCostData.txt"; + std::string fname = this->CTest->GetCostDataFile(); std::string tmpout = fname + ".tmp"; std::fstream fout; fout.open(tmpout.c_str(), std::ios::out); @@ -339,9 +338,8 @@ void cmCTestMultiProcessHandler::UpdateCostData() //--------------------------------------------------------- void cmCTestMultiProcessHandler::ReadCostData() { - //TODO variable location of the cost data file - std::string fname = this->CTest->GetBinaryDir() - + "/Testing/Temporary/CTestCostData.txt"; + std::string fname = this->CTest->GetCostDataFile(); + if(cmSystemTools::FileExists(fname.c_str(), true)) { std::ifstream fin; diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 7b25f8e12..e417e1beb 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -154,6 +154,17 @@ std::string cmCTest::CurrentTime() return cmXMLSafe(cmCTest::CleanString(current_time)).str(); } +//---------------------------------------------------------------------- +std::string cmCTest::GetCostDataFile() +{ + std::string fname = this->GetCTestConfiguration("CostDataFile"); + if(fname == "") + { + fname= this->GetBinaryDir() + "/Testing/Temporary/CTestCostData.txt"; + } + return fname; +} + #ifdef CMAKE_BUILD_WITH_CMAKE //---------------------------------------------------------------------------- static size_t diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 8621b10dc..adf359c7f 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -398,6 +398,8 @@ public: { this->StreamOut = out; this->StreamErr = err; } void AddSiteProperties(std::ostream& ); bool GetLabelSummary() { return this->LabelSummary;} + + std::string GetCostDataFile(); private: std::string ConfigType; std::string ScheduleType;