summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2003-04-01 20:31:27 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2003-04-01 20:31:27 (GMT)
commit394149a03420c2160b4150f9481f82be27ba69a9 (patch)
tree6e03080293e061caf37a54d628e3b006d02595d5
parenta783fcb25a04122a0173b6fba51b7d86a2ae8cd6 (diff)
downloadCMake-394149a03420c2160b4150f9481f82be27ba69a9.zip
CMake-394149a03420c2160b4150f9481f82be27ba69a9.tar.gz
CMake-394149a03420c2160b4150f9481f82be27ba69a9.tar.bz2
Fix cov. problems, ignore nonascii char. Propagate verbosity
-rw-r--r--Source/cmCTest.cxx115
1 files changed, 73 insertions, 42 deletions
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index de6a395..858ef41 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -167,10 +167,11 @@ std::string cmCTest::MakeXMLSafe(const std::string& str)
char buffer[10];
for ( pos = 0; pos < str.size(); pos ++ )
{
- char ch = str[pos];
- if ( ch > 126 )
+ unsigned char ch = str[pos];
+ if ( (ch > 126 || ch < 32) && ch != 9 )
{
- sprintf(buffer, "&%x", (int)ch);
+ sprintf(buffer, "&gt;&lt;");
+ //sprintf(buffer, "&#x%0x;", (unsigned int)ch);
ost << buffer;
}
else
@@ -1151,7 +1152,7 @@ int cmCTest::CoverageDirectory()
}
std::ofstream log;
- if (!this->OpenOutputFile("Coverage", "Coverage.log", log))
+ if (!this->OpenOutputFile("Temporary", "Coverage.log", log))
{
std::cout << "Cannot open log file" << std::endl;
return 1;
@@ -1163,7 +1164,8 @@ int cmCTest::CoverageDirectory()
return 1;
}
- std::string opath = m_ToplevelPath + "/Testing/" + m_CurrentTag + "/Coverage";
+ std::string opath = m_ToplevelPath + "/Testing/Temporary/Coverage";
+ cmSystemTools::MakeDirectory(opath.c_str());
for ( cc = 0; cc < files.size(); cc ++ )
{
@@ -1171,6 +1173,7 @@ int cmCTest::CoverageDirectory()
std::string output;
int retVal = 0;
//std::cout << "Run gcov on " << files[cc] << std::flush;
+ //std::cout << " --- Run [" << command << "]" << std::endl;
bool res = true;
if ( !m_ShowOnly )
{
@@ -1269,7 +1272,17 @@ int cmCTest::CoverageDirectory()
{
cov.m_FullPath = allbinaryfiles[it->first];
}
- //std::cerr << "Full path: " << cov.m_FullPath << std::endl;
+ std::string src_dir = m_DartConfiguration["SourceDirectory"];
+ std::string::size_type spos = cov.m_FullPath.find(src_dir);
+ if ( spos == 0 )
+ {
+ cov.m_FullPath = std::string(".") + cov.m_FullPath.substr(src_dir.size());
+ }
+ else
+ {
+ std::cerr << "Compare -- " << cov.m_FullPath << std::endl;
+ std::cerr << " -- " << src_dir << std::endl;
+ }
}
for ( cc = 0; cc < lines.size(); cc ++ )
{
@@ -1307,12 +1320,6 @@ int cmCTest::CoverageDirectory()
std::ofstream cfileoutput;
int cfileoutputcount = 0;
char cfileoutputname[100];
- sprintf(cfileoutputname, "CoverageLog-%d.xml", cfileoutputcount++);
- if (!this->OpenOutputFile(m_CurrentTag, cfileoutputname, cfileoutput))
- {
- std::cout << "Cannot open log file" << std::endl;
- return 1;
- }
std::string local_start_time = ::CurrentTime();
std::string local_end_time;
for ( cit = coverageresults.begin(); cit != coverageresults.end(); cit ++ )
@@ -1321,28 +1328,29 @@ int cmCTest::CoverageDirectory()
{
local_end_time = ::CurrentTime();
cfileoutput << "\t<EndDateTime>" << local_end_time << "</EndDateTime>\n"
- << "</CoverageLog>\n"
- << "</Site>" << std::endl;
+ << "</CoverageLog>\n"
+ << "</Site>" << std::endl;
cfileoutput.close();
+ std::cout << "Close file: " << cfileoutputname << std::endl;
+ ccount = 0;
+ }
+ if ( ccount == 0 )
+ {
sprintf(cfileoutputname, "CoverageLog-%d.xml", cfileoutputcount++);
+ std::cout << "Open file: " << cfileoutputname << std::endl;
if (!this->OpenOutputFile(m_CurrentTag, cfileoutputname, cfileoutput))
{
- std::cout << "Cannot open log file" << std::endl;
+ std::cout << "Cannot open log file: " << cfileoutputname << std::endl;
return 1;
}
- ccount = 0;
- }
-
- if ( ccount == 0 )
- {
local_start_time = ::CurrentTime();
cfileoutput << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- << "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
- << "\" BuildStamp=\"" << m_CurrentTag << "-"
- << this->GetTestModelString() << "\" Name=\""
- << m_DartConfiguration["Site"] << "\">\n"
- << "<CoverageLog>\n"
- << "\t<StartDateTime>" << local_start_time << "</StartDateTime>" << std::endl;
+ << "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
+ << "\" BuildStamp=\"" << m_CurrentTag << "-"
+ << this->GetTestModelString() << "\" Site=\""
+ << m_DartConfiguration["Site"] << "\">\n"
+ << "<CoverageLog>\n"
+ << "\t<StartDateTime>" << local_start_time << "</StartDateTime>" << std::endl;
}
//std::cerr << "Final process of Source file: " << cit->first << std::endl;
@@ -1361,17 +1369,17 @@ int cmCTest::CoverageDirectory()
cmSystemTools::Split(buffer, lines);
delete [] buffer;
cfileoutput << "\t<File Name=\"" << cit->first << "\" FullPath=\""
- << cov.m_FullPath << std::endl << "\">\n"
- << "\t\t<Report>" << std::endl;
+ << cov.m_FullPath << std::endl << "\">\n"
+ << "\t\t<Report>" << std::endl;
for ( cc = 0; cc < lines.size(); cc ++ )
{
cfileoutput << "\t\t<Line Number=\""
- << static_cast<int>(cc) << "\" Count=\""
- << cov.m_Lines[cc] << "\">"
- << lines[cc] << "</Line>" << std::endl;
+ << static_cast<int>(cc) << "\" Count=\""
+ << cov.m_Lines[cc] << "\">"
+ << cmCTest::MakeXMLSafe(lines[cc]) << "</Line>" << std::endl;
}
cfileoutput << "\t\t</Report>\n"
- << "\t</File>" << std::endl;
+ << "\t</File>" << std::endl;
total_tested += cov.m_Tested;
@@ -1381,17 +1389,18 @@ int cmCTest::CoverageDirectory()
if ( total_tested + total_untested > 0 )
{
cper = (100 * static_cast<float>(cov.m_Tested)/
- static_cast<float>(cov.m_Tested + cov.m_UnTested));
+ static_cast<float>(cov.m_Tested + cov.m_UnTested));
cmet = ( static_cast<float>(cov.m_Tested + 10) /
- static_cast<float>(cov.m_Tested + cov.m_UnTested + 10));
+ static_cast<float>(cov.m_Tested + cov.m_UnTested + 10));
}
log << "\t<File Name=\"" << cit->first << "\" FullPath=\"" << cov.m_FullPath
- << "\" Covered=\"" << cov.m_Covered << "\">\n"
- << "\t\t<LOCTested>" << cov.m_Tested << "</LOCTested>\n"
- << "\t\t<LOCUnTested>" << cov.m_UnTested << "</LOCUnTested>\n"
- << "\t\t<PercentCoverage>" << cper << "</PercentCoverage>\n"
- << "\t\t<CoverageMetric>" << cmet << "</CoverageMetric>\n"
- << "\t</File>" << std::endl;
+ << "\" Covered=\"" << (cmet>0?"true":"false") << "\">\n"
+ << "\t\t<LOCTested>" << cov.m_Tested << "</LOCTested>\n"
+ << "\t\t<LOCUnTested>" << cov.m_UnTested << "</LOCUnTested>\n"
+ << "\t\t<PercentCoverage>" << cper << "</PercentCoverage>\n"
+ << "\t\t<CoverageMetric>" << cmet << "</CoverageMetric>\n"
+ << "\t</File>" << std::endl;
+ ccount ++;
}
if ( ccount > 0 )
@@ -1427,7 +1436,6 @@ int cmCTest::CoverageDirectory()
<< "\tPercentage Coverage: " << percent_coverage << "%" << std::endl;
- std::cerr << "Coverage test is not yet implemented" << std::endl;
return 1;
}
@@ -1462,6 +1470,7 @@ bool cmCTest::OpenOutputFile(const std::string& path,
stream.open(filename.c_str());
if( !stream )
{
+ std::cout << "Problem opening file: " << filename << std::endl;
return false;
}
return true;
@@ -1791,12 +1800,32 @@ int cmCTest::SubmitResults()
if ( this->CTestFileExists("Coverage.xml") )
{
files.push_back("Coverage.xml");
+ std::vector<std::string> gfiles;
+ std::string gpath = m_ToplevelPath + "/Testing/" + m_CurrentTag;
+ std::string::size_type glen = gpath.size() + 1;
+ gpath = gpath + "/CoverageLog*";
+ //std::cout << "Globbing for: " << gpath.c_str() << std::endl;
+ if ( cmSystemTools::SimpleGlob(gpath, gfiles, 1) )
+ {
+ size_t cc;
+ for ( cc = 0; cc < gfiles.size(); cc ++ )
+ {
+ gfiles[cc] = gfiles[cc].substr(glen);
+ //std::cout << "Glob file: " << gfiles[cc].c_str() << std::endl;
+ files.push_back(gfiles[cc]);
+ }
+ }
+ else
+ {
+ std::cout << "Problem globbing" << std::endl;
+ }
}
if ( this->CTestFileExists("Purify.xml") )
{
files.push_back("Purify.xml");
}
cmCTestSubmit submit;
+ submit.SetVerbose(m_Verbose);
if ( m_DartConfiguration["DropMethod"] == "" ||
m_DartConfiguration["DropMethod"] == "ftp" )
{
@@ -1806,7 +1835,8 @@ int cmCTest::SubmitResults()
m_DartConfiguration["DropSitePassword"] + "@" +
m_DartConfiguration["DropSite"] +
m_DartConfiguration["DropLocation"];
- if ( !submit.SubmitUsingFTP(m_ToplevelPath+"/Testing/"+m_CurrentTag, files, prefix, url) )
+ if ( !submit.SubmitUsingFTP(m_ToplevelPath+"/Testing/"+m_CurrentTag,
+ files, prefix, url) )
{
return 0;
}
@@ -1838,6 +1868,7 @@ int cmCTest::SubmitResults()
{
return 0;
}
+ std::cout << "Submission successfull" << std::endl;
return 1;
}
else