diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index de8651c96f..40db404a70 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -365,6 +365,9 @@ cmCTestRunTest::EndTestResult cmCTestRunTest::EndTest(size_t completed, if (!skipped) { this->TestResult.CompletionStatus = "Completed"; } + this->TestResult.StartTestTime = + std::chrono::duration_cast( + this->TestProcess->GetSystemStartTime().time_since_epoch()); this->TestResult.ExecutionTime = this->TestProcess->GetTotalTime(); this->MemCheckPostProcess(); this->ComputeWeightedCost(); diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index d8b90e3203..5f442cb96f 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1525,6 +1525,7 @@ void cmCTestTestHandler::WriteTestResultHeader(cmXMLWriter& xml, xml.Element("Path", this->CTest->GetShortPathToFile(result.Path)); xml.Element("FullName", this->CTest->GetShortPathToFile(testPath)); xml.Element("FullCommandLine", result.FullCommandLine); + xml.Element("StartTestTime", result.StartTestTime); } void cmCTestTestHandler::WriteTestResultFooter(cmXMLWriter& xml, diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index e57bc107e8..f2c8e79757 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -194,6 +194,7 @@ public: std::string TestMeasurementsOutput; std::string InstrumentationFile; int TestCount = 0; + std::chrono::milliseconds StartTestTime; cmCTestTestProperties* Properties = nullptr; }; diff --git a/Source/cmXMLWriter.h b/Source/cmXMLWriter.h index e15542d401..bad1bc1301 100644 --- a/Source/cmXMLWriter.h +++ b/Source/cmXMLWriter.h @@ -113,6 +113,11 @@ private: return std::chrono::system_clock::to_time_t(value); } + static long long SafeContent(std::chrono::milliseconds value) + { + return value.count(); + } + template static T SafeContent(T value) {