From ed1a04360afaae3d752cd99346856d484ba42f7f Mon Sep 17 00:00:00 2001 From: David Cole Date: Mon, 11 Jun 2007 15:36:50 -0400 Subject: [PATCH] BUG: Never return a string containing a ":" from cmCTest::GetShortPathToFile - replace them with "_". DART cannot construct valid file names during dashboard rollup with ":" in the short path. Also, fix the Bullseye coverage handler so that the file names and paths match in both the coverage summary and the individual coverage logs. --- Source/CTest/cmCTestCoverageHandler.cxx | 13 +++++++------ Source/cmCTest.cxx | 20 ++++++++++++++------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 2090b2f09..d846851d8 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -1288,7 +1288,7 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( << std::endl); // start the file output covLogFile << "\tCTest->MakeXMLSafe(file.c_str()) + << this->CTest->MakeXMLSafe(i->first.c_str()) << "\" FullPath=\"" << this->CTest->MakeXMLSafe( this->CTest->GetShortPathToFile( i->second.c_str())) << "\">" << std::endl @@ -1478,21 +1478,22 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( << std::endl); continue; } + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Doing coverage for: " << file.c_str() << std::endl); coveredFiles.push_back(sourceFile); + coveredFilesFullPath.push_back(file); + number_files++; total_functions += totalFunctions; total_tested += functionsCalled; total_untested += (totalFunctions - functionsCalled); + std::string fileName = cmSystemTools::GetFilenameName(file.c_str()); - // get file relative to the source dir - file = cmSystemTools::RelativePath(cont->SourceDir.c_str(), - file.c_str()); - coveredFilesFullPath.push_back(file); + float cper = percentBranch + percentFunction; if(totalBranches > 0) { @@ -1519,7 +1520,7 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( tmpLog << "percentBranch: " << percentBranch << "\n"; tmpLog << "percentCoverage: " << percent_coverage << "\n"; tmpLog << "coverage metric: " << cmet << "\n"; - covSumFile << "\tCTest->MakeXMLSafe(fileName) + covSumFile << "\tCTest->MakeXMLSafe(sourceFile) << "\" FullPath=\"" << this->CTest->MakeXMLSafe( this->CTest->GetShortPathToFile(file.c_str())) << "\" Covered=\"" << (cmet>0?"true":"false") << "\">\n" diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index b650001b8..3e5d9c62e 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -2204,17 +2204,25 @@ std::string cmCTest::GetShortPathToFile(const char* cfname) { res = &bldRelpath; } + + std::string path; + if ( !res ) { - return fname; + path = fname; } - cmSystemTools::ConvertToUnixSlashes(*res); - - std::string path = "./" + *res; - if ( path[path.size()-1] == '/' ) + else { - path = path.substr(0, path.size()-1); + cmSystemTools::ConvertToUnixSlashes(*res); + + path = "./" + *res; + if ( path[path.size()-1] == '/' ) + { + path = path.substr(0, path.size()-1); + } } + + cmsys::SystemTools::ReplaceString(path, ":", "_"); return path; }