cmCTestCoverageHandle: Improve error handling.

This commit is contained in:
James Johnston 2015-08-08 00:28:38 -04:00
parent 3cefadbff0
commit b28b07db47
2 changed files with 28 additions and 7 deletions

View File

@ -1474,7 +1474,12 @@ int cmCTestCoverageHandler::HandleLCovCoverage(
<< std::endl, this->Quiet); << std::endl, this->Quiet);
std::vector<std::string> files; std::vector<std::string> files;
this->FindLCovFiles(files); if (!this->FindLCovFiles(files))
{
cmCTestLog(this->CTest, ERROR_MESSAGE,
"Error while finding LCov files.\n");
return 0;
}
std::vector<std::string>::iterator it; std::vector<std::string>::iterator it;
if (files.empty()) if (files.empty())
@ -1745,18 +1750,28 @@ void cmCTestCoverageHandler::FindGCovFiles(std::vector<std::string>& files)
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void cmCTestCoverageHandler::FindLCovFiles(std::vector<std::string>& files) bool cmCTestCoverageHandler::FindLCovFiles(std::vector<std::string>& files)
{ {
cmsys::Glob gl; cmsys::Glob gl;
gl.RecurseOff(); // No need of recurse if -prof_dir${BUILD_DIR} flag is gl.RecurseOff(); // No need of recurse if -prof_dir${BUILD_DIR} flag is
// used while compiling. // used while compiling.
gl.RecurseThroughSymlinksOff(); gl.RecurseThroughSymlinksOff();
std::string prevBinaryDir; std::string prevBinaryDir;
cmSystemTools::ChangeDirectory( std::string buildDir = this->CTest->GetCTestConfiguration("BuildDirectory");
this->CTest->GetCTestConfiguration("BuildDirectory")); if (cmSystemTools::ChangeDirectory(buildDir))
{
cmCTestLog(this->CTest, ERROR_MESSAGE,
"Error changing directory to " << buildDir << std::endl);
return false;
}
// Run profmerge to merge all *.dyn files into dpi files // Run profmerge to merge all *.dyn files into dpi files
cmSystemTools::RunSingleCommand("profmerge"); if (!cmSystemTools::RunSingleCommand("profmerge"))
{
cmCTestLog(this->CTest, ERROR_MESSAGE,
"Error while running profmerge.\n");
return false;
}
prevBinaryDir = cmSystemTools::GetCurrentWorkingDirectory().c_str(); prevBinaryDir = cmSystemTools::GetCurrentWorkingDirectory().c_str();
@ -1766,10 +1781,16 @@ void cmCTestCoverageHandler::FindLCovFiles(std::vector<std::string>& files)
daGlob += "/*.dpi"; daGlob += "/*.dpi";
cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
" looking for dpi files in: " << daGlob << std::endl, this->Quiet); " looking for dpi files in: " << daGlob << std::endl, this->Quiet);
gl.FindFiles(daGlob); if (!gl.FindFiles(daGlob))
{
cmCTestLog(this->CTest, ERROR_MESSAGE,
"Error while finding files matching " << daGlob << std::endl);
return false;
}
files.insert(files.end(), gl.GetFiles().begin(), gl.GetFiles().end()); files.insert(files.end(), gl.GetFiles().begin(), gl.GetFiles().end());
cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
"Now searching in: " << daGlob << std::endl, this->Quiet); "Now searching in: " << daGlob << std::endl, this->Quiet);
return true;
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View File

@ -75,7 +75,7 @@ private:
//! Handle coverage using Intel's LCov //! Handle coverage using Intel's LCov
int HandleLCovCoverage(cmCTestCoverageHandlerContainer* cont); int HandleLCovCoverage(cmCTestCoverageHandlerContainer* cont);
void FindLCovFiles(std::vector<std::string>& files); bool FindLCovFiles(std::vector<std::string>& files);
//! Handle coverage using xdebug php coverage //! Handle coverage using xdebug php coverage
int HandlePHPCoverage(cmCTestCoverageHandlerContainer* cont); int HandlePHPCoverage(cmCTestCoverageHandlerContainer* cont);