summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmCTest.cxx60
-rw-r--r--Source/cmLocalGenerator.cxx4
2 files changed, 53 insertions, 11 deletions
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index a7b5c5a..57ace62 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -1366,26 +1366,47 @@ int cmCTest::CoverageDirectory()
std::string opath = m_ToplevelPath + "/Testing/Temporary/Coverage";
cmSystemTools::MakeDirectory(opath.c_str());
+ cfiles.clear();
+ cmCTest::tm_VectorOfStrings ncfiles;
+ cmCTest::tm_VectorOfStrings missing_files;
for ( cc = 0; cc < files.size(); cc ++ )
{
- std::string command = coverageCommand + " -o \"" +
- cmSystemTools::GetFilenamePath(files[cc]) +
- "\" -l \"" + files[cc] + "\"";
+ std::string currPath = cmSystemTools::GetFilenamePath(files[cc]);
+ std::string command = coverageCommand + " -o \"" + currPath + "\" -l \"" + files[cc] + "\"";
std::string output;
int retVal = 0;
- //std::cout << "Run gcov on " << files[cc] << std::flush;
+ std::cerr << "Run gcov on " << files[cc] << " in directory: " << currPath.c_str() << std::endl;
//std::cout << " --- Run [" << command << "]" << std::endl;
bool res = true;
if ( !m_ShowOnly )
{
res = cmSystemTools::RunSingleCommand(command.c_str(), &output,
- &retVal, opath.c_str(),
+ &retVal, currPath.c_str(),
m_Verbose, 0 /*m_TimeOut*/);
}
if ( res && retVal == 0 )
{
//std::cout << " - done" << std::endl;
+ glob = currPath + "/*";
+ if ( !cmSystemTools::SimpleGlob(glob, ncfiles, 1) )
+ {
+ std::cerr << "Cannot found any coverage files" << std::endl;
+ return 1;
+ }
+ cfiles.insert(cfiles.end(), ncfiles.begin(), ncfiles.end());
+ std::vector<cmStdString> gcovlines;
+ cmSystemTools::Split(output.c_str(), gcovlines);
+ std::vector<cmStdString>::iterator git;
+ const char* message = "Could not open source file";
+ for ( git = gcovlines.begin(); git != gcovlines.end(); ++git )
+ {
+ if ( strncmp(git->c_str(), message, strlen(message) ) == 0 )
+ {
+ std::cerr << "Problem: " << git->c_str() << std::endl;
+ missing_files.push_back(git->c_str() + strlen(message));
+ }
+ }
}
else
{
@@ -1396,12 +1417,6 @@ int cmCTest::CoverageDirectory()
}
files.clear();
- glob = opath + "/*";
- if ( !cmSystemTools::SimpleGlob(glob, cfiles, 1) )
- {
- std::cerr << "Cannot found any coverage files" << std::endl;
- return 1;
- }
std::map<std::string, cmCTest::tm_VectorOfStrings > sourcefiles;
for ( cc = 0; cc < cfiles.size(); cc ++ )
{
@@ -1435,6 +1450,13 @@ int cmCTest::CoverageDirectory()
// {
// std::cout << "File: " << files[cc] << std::endl;
// }
+ std::cout << "---------------------------------------------------------------" << std::endl;
+ std::cout << "The following files were missing:" << std::endl;
+ for ( cc = 0; cc < missing_files.size(); cc ++ )
+ {
+ std::cout << "File: " << missing_files[cc] << std::endl;
+ }
+ std::cout << "---------------------------------------------------------------" << std::endl;
std::map<std::string, cmCTest::tm_VectorOfStrings >::iterator it;
cmCTest::tm_CoverageMap coverageresults;
@@ -3223,6 +3245,10 @@ int cmCTest::RunConfigurationScript()
// we must now checkout the src dir
output = "";
+ if ( m_Verbose )
+ {
+ std::cerr << "Run cvs: " << cvsCheckOut << std::endl;
+ }
res = cmSystemTools::RunSingleCommand(cvsCheckOut, &output,
&retVal, ctestRoot,
m_Verbose, 0 /*m_TimeOut*/);
@@ -3283,6 +3309,10 @@ int cmCTest::RunConfigurationScript()
fullCommand += cvsArgs[1];
output = "";
retVal = 0;
+ if ( m_Verbose )
+ {
+ std::cerr << "Run CVS: " << fullCommand.c_str() << std::endl;
+ }
res = cmSystemTools::RunSingleCommand(fullCommand.c_str(), &output,
&retVal, cvsArgs[0].c_str(),
m_Verbose, 0 /*m_TimeOut*/);
@@ -3334,6 +3364,10 @@ int cmCTest::RunConfigurationScript()
output = "";
command += "\"";
retVal = 0;
+ if ( m_Verbose )
+ {
+ std::cerr << "Run cmake command: " << command.c_str() << std::endl;
+ }
res = cmSystemTools::RunSingleCommand(command.c_str(), &output,
&retVal, binDir,
m_Verbose, 0 /*m_TimeOut*/);
@@ -3348,6 +3382,10 @@ int cmCTest::RunConfigurationScript()
command = ctestCmd;
output = "";
retVal = 0;
+ if ( m_Verbose )
+ {
+ std::cerr << "Run ctest command: " << command.c_str() << std::endl;
+ }
res = cmSystemTools::RunSingleCommand(command.c_str(), &output,
&retVal, binDir,
m_Verbose, 0 /*m_TimeOut*/);
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 1e23d31..1f95d70 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -328,6 +328,10 @@ std::string cmLocalGenerator::GetFullTargetName(const char* n,
std::string cmLocalGenerator::ConvertToRelativeOutputPath(const char* p)
{
+ if ( m_Makefile->GetDefinition("CMAKE_NO_RELATIVE_PATHS") )
+ {
+ return cmSystemTools::ConvertToOutputPath(p);
+ }
// do not use relative paths for network build trees
// the network paths do not work
const char* outputDirectory = m_Makefile->GetHomeOutputDirectory();