diff options
author | Michael Wegner <michael_wegner@apple.com> | 2018-07-28 20:46:19 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-09-25 12:20:57 (GMT) |
commit | 6a285bb737b904f33de287eede1eaec9928e3e3d (patch) | |
tree | f4afebe7aaa6841aa4f4d4e274c8a39974dabfeb /Source/CTest | |
parent | e173c25f19a8b532d8175ba77a57012a99779ea3 (diff) | |
download | CMake-6a285bb737b904f33de287eede1eaec9928e3e3d.zip CMake-6a285bb737b904f33de287eede1eaec9928e3e3d.tar.gz CMake-6a285bb737b904f33de287eede1eaec9928e3e3d.tar.bz2 |
cmCTestRunTest: Buffer test result output before printing
Diffstat (limited to 'Source/CTest')
-rw-r--r-- | Source/CTest/cmCTestRunTest.cxx | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index 23d4616..57b12f1 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -181,6 +181,7 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) } } } + std::ostringstream outputStream; if (res == cmProcess::State::Exited) { bool success = !forceFail && (retVal == 0 || @@ -196,36 +197,36 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) } else if ((success && !this->TestProperties->WillFail) || (!success && this->TestProperties->WillFail)) { this->TestResult.Status = cmCTestTestHandler::COMPLETED; - cmCTestLog(this->CTest, HANDLER_OUTPUT, " Passed "); + outputStream << " Passed "; } else { this->TestResult.Status = cmCTestTestHandler::FAILED; - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Failed " << reason); + outputStream << "***Failed " << reason; outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure; } } else if (res == cmProcess::State::Expired) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Timeout "); + outputStream << "***Timeout "; this->TestResult.Status = cmCTestTestHandler::TIMEOUT; outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure; } else if (res == cmProcess::State::Exception) { outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure; - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Exception: "); + outputStream << "***Exception: "; this->TestResult.ExceptionStatus = this->TestProcess->GetExitExceptionString(); switch (this->TestProcess->GetExitException()) { case cmProcess::Exception::Fault: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "SegFault"); + outputStream << "SegFault"; this->TestResult.Status = cmCTestTestHandler::SEGFAULT; break; case cmProcess::Exception::Illegal: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Illegal"); + outputStream << "Illegal"; this->TestResult.Status = cmCTestTestHandler::ILLEGAL; break; case cmProcess::Exception::Interrupt: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Interrupt"); + outputStream << "Interrupt"; this->TestResult.Status = cmCTestTestHandler::INTERRUPT; break; case cmProcess::Exception::Numerical: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Numerical"); + outputStream << "Numerical"; this->TestResult.Status = cmCTestTestHandler::NUMERICAL; break; default: @@ -234,16 +235,18 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) this->TestResult.Status = cmCTestTestHandler::OTHER_FAULT; } } else if ("Disabled" == this->TestResult.CompletionStatus) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Not Run (Disabled) "); + outputStream << "***Not Run (Disabled) "; } else // cmProcess::State::Error { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Not Run "); + outputStream << "***Not Run "; } passed = this->TestResult.Status == cmCTestTestHandler::COMPLETED; char buf[1024]; sprintf(buf, "%6.2f sec", this->TestProcess->GetTotalTime().count()); - cmCTestLog(this->CTest, HANDLER_OUTPUT, buf << "\n"); + outputStream << buf << "\n"; + + cmCTestLog(this->CTest, HANDLER_OUTPUT, outputStream.str()); if (outputTestErrorsToConsole) { cmCTestLog(this->CTest, HANDLER_OUTPUT, this->ProcessOutput << std::endl); @@ -689,6 +692,8 @@ bool cmCTestRunTest::ForkProcess(cmDuration testTimeOut, bool explicitTimeout, void cmCTestRunTest::WriteLogOutputTop(size_t completed, size_t total) { + std::ostringstream outputStream; + // if this is the last or only run of this test // then print out completed / total // Only issue is if a test fails and we are running until fail @@ -696,37 +701,32 @@ void cmCTestRunTest::WriteLogOutputTop(size_t completed, size_t total) // got for run until pass. Trick is when this is called we don't // yet know if we are passing or failing. if (this->NumberOfRunsLeft == 1) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, - std::setw(getNumWidth(total)) << completed << "/"); - cmCTestLog(this->CTest, HANDLER_OUTPUT, - std::setw(getNumWidth(total)) << total << " "); + outputStream << std::setw(getNumWidth(total)) << completed << "/"; + outputStream << std::setw(getNumWidth(total)) << total << " "; } // if this is one of several runs of a test just print blank space // to keep things neat else { - cmCTestLog(this->CTest, HANDLER_OUTPUT, - std::setw(getNumWidth(total)) << " " - << " "); - cmCTestLog(this->CTest, HANDLER_OUTPUT, - std::setw(getNumWidth(total)) << " " - << " "); + outputStream << std::setw(getNumWidth(total)) << " "; + outputStream << std::setw(getNumWidth(total)) << " "; } if (this->TestHandler->MemCheck) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "MemCheck"); + outputStream << "MemCheck"; } else { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Test"); + outputStream << "Test"; } std::ostringstream indexStr; indexStr << " #" << this->Index << ":"; - cmCTestLog(this->CTest, HANDLER_OUTPUT, - std::setw(3 + getNumWidth(this->TestHandler->GetMaxIndex())) - << indexStr.str()); - cmCTestLog(this->CTest, HANDLER_OUTPUT, " "); + outputStream << std::setw(3 + getNumWidth(this->TestHandler->GetMaxIndex())) + << indexStr.str(); + outputStream << " "; + const int maxTestNameWidth = this->CTest->GetMaxTestNameWidth(); std::string outname = this->TestProperties->Name + " "; outname.resize(maxTestNameWidth + 4, '.'); + outputStream << outname; *this->TestHandler->LogFile << this->TestProperties->Index << "/" << this->TestHandler->TotalNumberOfTests @@ -754,7 +754,8 @@ void cmCTestRunTest::WriteLogOutputTop(size_t completed, size_t total) *this->TestHandler->LogFile << this->ProcessOutput << "<end of output>" << std::endl; - cmCTestLog(this->CTest, HANDLER_OUTPUT, outname.c_str()); + cmCTestLog(this->CTest, HANDLER_OUTPUT, outputStream.str()); + cmCTestLog(this->CTest, DEBUG, "Testing " << this->TestProperties->Name << " ... "); } |