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::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;
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;
gl.RecurseOff(); // No need of recurse if -prof_dir${BUILD_DIR} flag is
// used while compiling.
gl.RecurseThroughSymlinksOff();
std::string prevBinaryDir;
cmSystemTools::ChangeDirectory(
this->CTest->GetCTestConfiguration("BuildDirectory"));
std::string buildDir = 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
cmSystemTools::RunSingleCommand("profmerge");
if (!cmSystemTools::RunSingleCommand("profmerge"))
{
cmCTestLog(this->CTest, ERROR_MESSAGE,
"Error while running profmerge.\n");
return false;
}
prevBinaryDir = cmSystemTools::GetCurrentWorkingDirectory().c_str();
@ -1766,10 +1781,16 @@ void cmCTestCoverageHandler::FindLCovFiles(std::vector<std::string>& files)
daGlob += "/*.dpi";
cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
" 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());
cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
"Now searching in: " << daGlob << std::endl, this->Quiet);
return true;
}
//----------------------------------------------------------------------

View File

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