浏览代码

CTest: Generate NamedMeasurement elements directly into xml file

Re-order the logic to avoid use of a temporary std::ostringstream.
Daniel Pfeifer 10 年之前
父节点
当前提交
b26e5b552a
共有 3 个文件被更改,包括 6 次插入10 次删除
  1. 1 3
      Source/CTest/cmCTestRunTest.cxx
  2. 3 5
      Source/CTest/cmCTestTestHandler.cxx
  3. 2 2
      Source/CTest/cmCTestTestHandler.h

+ 1 - 3
Source/CTest/cmCTestRunTest.cxx

@@ -607,7 +607,7 @@ void cmCTestRunTest::DartProcessing()
     {
     if (this->TestHandler->DartStuff.find(this->ProcessOutput.c_str()))
       {
-      std::string dartString = this->TestHandler->DartStuff.match(1);
+      this->TestResult.DartString = this->TestHandler->DartStuff.match(1);
       // keep searching and replacing until none are left
       while (this->TestHandler->DartStuff1.find(this->ProcessOutput.c_str()))
         {
@@ -615,8 +615,6 @@ void cmCTestRunTest::DartProcessing()
         cmSystemTools::ReplaceString(this->ProcessOutput,
                          this->TestHandler->DartStuff1.match(1).c_str(), "");
         }
-      this->TestResult.RegressionImages
-        = this->TestHandler->GenerateRegressionImages(dartString);
       }
     }
 }

+ 3 - 5
Source/CTest/cmCTestTestHandler.cxx

@@ -1185,7 +1185,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os)
           << "</Value></NamedMeasurement>"
           << std::endl;
         }
-      os << result->RegressionImages;
+      this->GenerateRegressionImages(os, result->DartString);
       os << "\t\t\t<NamedMeasurement type=\"numeric/double\" "
         << "name=\"Execution Time\"><Value>"
         << result->ExecutionTime
@@ -1828,8 +1828,8 @@ void cmCTestTestHandler::ExpandTestsToRunInformationForRerunFailed()
 // Just for convenience
 #define SPACE_REGEX "[ \t\r\n]"
 //----------------------------------------------------------------------
-std::string cmCTestTestHandler::GenerateRegressionImages(
-  const std::string& xml)
+void cmCTestTestHandler::GenerateRegressionImages(
+  std::ostream& ostr, const std::string& xml)
 {
   cmsys::RegularExpression twoattributes(
     "<DartMeasurement"
@@ -1864,7 +1864,6 @@ std::string cmCTestTestHandler::GenerateRegressionImages(
     SPACE_REGEX "*(name|type|encoding|compression)=\"([^\"]*)\""
     SPACE_REGEX "*>([^<]*)</DartMeasurementFile>");
 
-  std::ostringstream ostr;
   bool done = false;
   std::string cxml = xml;
   while ( ! done )
@@ -2026,7 +2025,6 @@ std::string cmCTestTestHandler::GenerateRegressionImages(
       done = true;
       }
     }
-  return ostr.str();
 }
 
 //----------------------------------------------------------------------

+ 2 - 2
Source/CTest/cmCTestTestHandler.h

@@ -128,7 +128,7 @@ public:
     bool        CompressOutput;
     std::string CompletionStatus;
     std::string Output;
-    std::string RegressionImages;
+    std::string DartString;
     int         TestCount;
     cmCTestTestProperties* Properties;
   };
@@ -270,7 +270,7 @@ private:
   cmsys::RegularExpression IncludeTestsRegularExpression;
   cmsys::RegularExpression ExcludeTestsRegularExpression;
 
-  std::string GenerateRegressionImages(const std::string& xml);
+  void GenerateRegressionImages(std::ostream& ostr, const std::string& xml);
   cmsys::RegularExpression DartStuff1;
   void CheckLabelFilter(cmCTestTestProperties& it);
   void CheckLabelFilterExclude(cmCTestTestProperties& it);