소스 검색

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.
Zach Mullen 15 년 전
부모
커밋
09e748c69a
4개의 변경된 파일20개의 추가작업 그리고 5개의 파일을 삭제
  1. 4 0
      Modules/DartConfiguration.tcl.in
  2. 3 5
      Source/CTest/cmCTestMultiProcessHandler.cxx
  3. 11 0
      Source/cmCTest.cxx
  4. 2 0
      Source/cmCTest.h

+ 4 - 0
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@
 

+ 3 - 5
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;

+ 11 - 0
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

+ 2 - 0
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;