diff options
author | Zach Mullen <zach.mullen@kitware.com> | 2009-12-10 20:37:04 (GMT) |
---|---|---|
committer | Zach Mullen <zach.mullen@kitware.com> | 2009-12-10 20:37:04 (GMT) |
commit | 4de7cc3621c723f76938063c10a4f8fc691ad58e (patch) | |
tree | 9ff9aa8fe77645b8d3c86f5cb8652adcdadde6b4 /Source/CTest/cmCTestRunTest.cxx | |
parent | 48b613392848610d243962086fb289a93cc41f0d (diff) | |
download | CMake-4de7cc3621c723f76938063c10a4f8fc691ad58e.zip CMake-4de7cc3621c723f76938063c10a4f8fc691ad58e.tar.gz CMake-4de7cc3621c723f76938063c10a4f8fc691ad58e.tar.bz2 |
Unfortunately, I noticed the comment on bug 8668 too late. This changes my last implementation of the exe wrapper to something which makes much more sense: a REQUIRED_FILES property on tests.
Diffstat (limited to 'Source/CTest/cmCTestRunTest.cxx')
-rw-r--r-- | Source/CTest/cmCTestRunTest.cxx | 93 |
1 files changed, 35 insertions, 58 deletions
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index 83119c7..3bb808a 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -26,8 +26,6 @@ cmCTestRunTest::cmCTestRunTest(cmCTestTestHandler* handler) this->TestResult.Status = 0; this->TestResult.TestCount = 0; this->TestResult.Properties = 0; - this->PrefixCommand = ""; - this->UsePrefixCommand = false; } cmCTestRunTest::~cmCTestRunTest() @@ -305,27 +303,51 @@ bool cmCTestRunTest::StartTest(size_t total) << this->TestProperties->Name << std::endl); this->ComputeArguments(); std::vector<std::string>& args = this->TestProperties->Args; - std::vector<std::string>& pargs = this->TestProperties->PrefixArgs; this->TestResult.Properties = this->TestProperties; this->TestResult.ExecutionTime = 0; this->TestResult.ReturnValue = -1; this->TestResult.CompletionStatus = "Failed to start"; this->TestResult.Status = cmCTestTestHandler::BAD_COMMAND; - this->TestResult.TestCount = this->TestProperties->Index; + this->TestResult.TestCount = this->TestProperties->Index; this->TestResult.Name = this->TestProperties->Name; this->TestResult.Path = this->TestProperties->Directory.c_str(); - // if we are using a prefix command, make sure THAT executable exists - if (this->UsePrefixCommand && this->PrefixCommand == "") + // Check if all required files exist + for(std::vector<std::string>::iterator i = + this->TestProperties->RequiredFiles.begin(); + i != this->TestProperties->RequiredFiles.end(); ++i) { - this->ExeNotFound(pargs[0]); - return false; - } + std::string file = *i; + if(!cmSystemTools::FileExists(file.c_str())) + { + //Required file was not found + this->TestProcess = new cmProcess; + *this->TestHandler->LogFile << "Unable to find required file: " + << file.c_str() << std::endl; + cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to find required file: " + << file.c_str() << std::endl); + this->TestResult.Output = "Unable to find required file: " + file; + this->TestResult.FullCommandLine = ""; + this->TestResult.CompletionStatus = "Not Run"; + this->TestResult.Status = cmCTestTestHandler::NOT_RUN; + return false; + } + } // log and return if we did not find the executable if (this->ActualCommand == "") { - this->ExeNotFound(args[1]); + // if the command was not found create a TestResult object + // that has that information + 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]; + this->TestResult.FullCommandLine = ""; + this->TestResult.CompletionStatus = "Not Run"; + this->TestResult.Status = cmCTestTestHandler::NOT_RUN; return false; } this->StartTime = this->CTest->CurrentTime(); @@ -334,36 +356,12 @@ bool cmCTestRunTest::StartTest(size_t total) &this->TestProperties->Environment); } -void cmCTestRunTest::ExeNotFound(std::string exe) -{ - this->TestProcess = new cmProcess; - *this->TestHandler->LogFile << "Unable to find executable: " - << exe.c_str() << std::endl; - cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to find executable: " - << exe.c_str() << std::endl); - this->TestResult.Output = "Unable to find executable: " + exe; - this->TestResult.FullCommandLine = ""; - this->TestResult.CompletionStatus = "Not Run"; - this->TestResult.Reason = ""; - this->TestResult.Status = cmCTestTestHandler::NOT_RUN; -} - void cmCTestRunTest::ComputeArguments() { std::vector<std::string>::const_iterator j = this->TestProperties->Args.begin(); ++j; // skip test name - this->TestCommand = ""; - - //If we are using a prefix command, find the exe for it - if(this->TestProperties->PrefixArgs.size()) - { - this->UsePrefixCommand = true; - this->PrefixCommand = this->TestHandler->FindTheExecutable( - this->TestProperties->PrefixArgs[0].c_str()); - } - // find the test executable if(this->TestHandler->MemCheck) { @@ -378,6 +376,8 @@ void cmCTestRunTest::ComputeArguments() this->TestProperties->Args[1].c_str()); ++j; //skip the executable (it will be actualCommand) } + this->TestCommand + = cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str()); //Prepends memcheck args to our command string this->TestHandler->GenerateTestCommand(this->Arguments); @@ -387,27 +387,6 @@ void cmCTestRunTest::ComputeArguments() this->TestCommand += " "; this->TestCommand += cmSystemTools::EscapeSpaces(j->c_str()); } - //Add user specified prefix args - if(this->UsePrefixCommand) - { - this->TestCommand += - cmSystemTools::ConvertToOutputPath(this->PrefixCommand.c_str()); - - std::vector<std::string>::iterator i = - this->TestProperties->PrefixArgs.begin(); - ++i; //skip the exe name - for(; i != this->TestProperties->PrefixArgs.end(); ++i) - { - this->TestCommand += " "; - this->TestCommand += cmSystemTools::EscapeSpaces(i->c_str()); - this->Arguments.push_back(*i); - } - this->Arguments.push_back(this->ActualCommand); - this->TestCommand += " "; - } - //Add regular test args - this->TestCommand - += cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str()); for(;j != this->TestProperties->Args.end(); ++j) { @@ -454,9 +433,7 @@ bool cmCTestRunTest::CreateProcess(double testTimeOut, this->TestProcess->SetId(this->Index); this->TestProcess->SetWorkingDirectory( this->TestProperties->Directory.c_str()); - this->TestProcess->SetCommand(this->UsePrefixCommand ? - this->PrefixCommand.c_str() : - this->ActualCommand.c_str()); + this->TestProcess->SetCommand(this->ActualCommand.c_str()); this->TestProcess->SetCommandArguments(this->Arguments); std::vector<std::string> origEnv; |