summaryrefslogtreecommitdiffstats
path: root/Source/CTest/cmCTestRunTest.cxx
diff options
context:
space:
mode:
authorZach Mullen <zach.mullen@kitware.com>2009-09-10 15:16:08 (GMT)
committerZach Mullen <zach.mullen@kitware.com>2009-09-10 15:16:08 (GMT)
commit4b4e801eba8efe6da7407ec3364b3fd04eb59e81 (patch)
tree27fe0619d1452a622ede1975dcd2a2b55a00ec75 /Source/CTest/cmCTestRunTest.cxx
parent55e4ac5ad1344d7636248803f581e72a7dc37a48 (diff)
downloadCMake-4b4e801eba8efe6da7407ec3364b3fd04eb59e81.zip
CMake-4b4e801eba8efe6da7407ec3364b3fd04eb59e81.tar.gz
CMake-4b4e801eba8efe6da7407ec3364b3fd04eb59e81.tar.bz2
BUG: Fixed segfault and bad reporting if a ctest executable could not be found. Also added some batch testing code that is not yet complete.
Diffstat (limited to 'Source/CTest/cmCTestRunTest.cxx')
-rw-r--r--Source/CTest/cmCTestRunTest.cxx31
1 files changed, 14 insertions, 17 deletions
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index 2f20adf..92df585 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -92,9 +92,9 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
this->WriteLogOutputTop(completed, total);
std::string reason;
bool passed = true;
- int res = this->TestProcess->GetProcessStatus();
+ int res = started ? this->TestProcess->GetProcessStatus()
+ : cmsysProcess_State_Error;
int retVal = this->TestProcess->GetExitValue();
-
std::vector<std::pair<cmsys::RegularExpression,
std::string> >::iterator passIt;
bool forceFail = false;
@@ -197,7 +197,6 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
}
passed = this->TestResult.Status == cmCTestTestHandler::COMPLETED;
-
char buf[1024];
sprintf(buf, "%6.2f sec", this->TestProcess->GetTotalTime());
cmCTestLog(this->CTest, HANDLER_OUTPUT, buf << "\n" );
@@ -208,9 +207,9 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
this->DartProcessing();
// if this is doing MemCheck then all the output needs to be put into
// Output since that is what is parsed by cmCTestMemCheckHandler
- if(!this->TestHandler->MemCheck)
+ if(!this->TestHandler->MemCheck && started)
{
- if ( this->TestResult.Status == cmCTestTestHandler::COMPLETED )
+ if (this->TestResult.Status == cmCTestTestHandler::COMPLETED)
{
this->TestHandler->CleanTestOutput(this->ProcessOutput,
static_cast<size_t>
@@ -224,7 +223,7 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
}
}
this->TestResult.Reason = reason;
- if ( this->TestHandler->LogFile )
+ if (this->TestHandler->LogFile)
{
bool pass = true;
const char* reasonType = "Test Pass Reason";
@@ -272,10 +271,10 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
this->TestResult.ReturnValue = this->TestProcess->GetExitValue();
this->TestResult.CompletionStatus = "Completed";
this->TestResult.ExecutionTime = this->TestProcess->GetTotalTime();
- this->TestHandler->TestResults.push_back( this->TestResult );
- }
- this->MemCheckPostProcess();
+ this->TestHandler->TestResults.push_back(this->TestResult);
+ this->MemCheckPostProcess();
+ }
delete this->TestProcess;
return passed;
}
@@ -324,20 +323,18 @@ bool cmCTestRunTest::StartTest()
this->TestResult.Name = this->TestProperties->Name;
this->TestResult.Path = this->TestProperties->Directory.c_str();
- // continue if we did not find the executable
- if (this->TestCommand == "")
+ // log and return if we did not find the executable
+ if (this->ActualCommand == "")
{
+ this->TestProcess = new cmProcess;
*this->TestHandler->LogFile << "Unable to find executable: "
<< args[1].c_str() << std::endl;
cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to find executable: "
<< args[1].c_str() << std::endl);
this->TestResult.Output = "Unable to find executable: " + args[1];
- if ( !this->CTest->GetShowOnly() )
- {
- this->TestResult.FullCommandLine = this->ActualCommand;
- this->TestHandler->TestResults.push_back( this->TestResult );
- return false;
- }
+ this->TestResult.FullCommandLine = "";
+ this->TestHandler->TestResults.push_back(this->TestResult);
+ return false;
}
this->StartTime = this->CTest->CurrentTime();