summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2009-09-11 17:34:35 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2009-09-11 17:34:35 (GMT)
commit8a690289c205da90133e704439dc6f7ef1a08680 (patch)
treeec95de31ddfdba630a075688b59184de1fa1ea61 /Source
parent6a7eae718457e8ad9a91729f4c02a666e6ceba98 (diff)
downloadCMake-8a690289c205da90133e704439dc6f7ef1a08680.zip
CMake-8a690289c205da90133e704439dc6f7ef1a08680.tar.gz
CMake-8a690289c205da90133e704439dc6f7ef1a08680.tar.bz2
Add label summary times to ctest default output. Also, remove parallel time output. Add flag to disable label summary.
Diffstat (limited to 'Source')
-rw-r--r--Source/CTest/cmCTestTestHandler.cxx52
-rw-r--r--Source/cmCTest.cxx5
-rw-r--r--Source/cmCTest.h2
-rw-r--r--Source/ctest.cxx4
4 files changed, 43 insertions, 20 deletions
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx
index c6af20d..6e718da 100644
--- a/Source/CTest/cmCTestTestHandler.cxx
+++ b/Source/CTest/cmCTestTestHandler.cxx
@@ -589,25 +589,15 @@ int cmCTestTestHandler::ProcessHandler()
<< static_cast<int>(percent + .5) << "% tests passed, "
<< failed.size() << " tests failed out of "
<< total << std::endl);
- double totalTestTime = 0;
-
- for(cmCTestTestHandler::TestResultsVector::size_type cc = 0;
- cc < this->TestResults.size(); cc ++ )
+ if(this->CTest->GetLabelSummary())
{
- cmCTestTestResult *result = &this->TestResults[cc];
- totalTestTime += result->ExecutionTime;
+ this->PrintLabelSummary();
}
-
char realBuf[1024];
sprintf(realBuf, "%6.2f sec", (double)(clock_finish - clock_start));
cmCTestLog(this->CTest, HANDLER_OUTPUT, "\nTotal Test time (real) = "
<< realBuf << "\n" );
- char totalBuf[1024];
- sprintf(totalBuf, "%6.2f sec", totalTestTime);
- cmCTestLog(this->CTest, HANDLER_OUTPUT, "\nTotal Test time (parallel) = "
- << totalBuf << "\n" );
-
if (failed.size())
{
cmGeneratedFileStream ofs;
@@ -672,6 +662,7 @@ void cmCTestTestHandler::PrintLabelSummary()
std::map<cmStdString, double> labelTimes;
std::set<cmStdString> labels;
// initialize maps
+ std::string::size_type maxlen = 0;
for(; it != this->TestList.end(); ++it)
{
cmCTestTestProperties& p = *it;
@@ -680,6 +671,10 @@ void cmCTestTestHandler::PrintLabelSummary()
for(std::vector<std::string>::iterator l = p.Labels.begin();
l != p.Labels.end(); ++l)
{
+ if((*l).size() > maxlen)
+ {
+ maxlen = (*l).size();
+ }
labels.insert(*l);
labelTimes[*l] = 0;
}
@@ -696,23 +691,40 @@ void cmCTestTestHandler::PrintLabelSummary()
{
for(std::vector<std::string>::iterator l = p.Labels.begin();
l != p.Labels.end(); ++l)
- {
+ {
labelTimes[*l] += result.ExecutionTime;
}
}
}
- // now print times
+ // now print times
+ if(labels.size())
+ {
+ cmCTestLog(this->CTest, HANDLER_OUTPUT, "\nLabel Time Summary:");
+ }
for(std::set<cmStdString>::const_iterator i = labels.begin();
i != labels.end(); ++i)
{
- cmCTestLog(this->CTest, HANDLER_OUTPUT, "\nTime in "
- << *i << " = " << labelTimes[*i] << " sec" );
+ std::string label = *i;
+ label.resize(maxlen +3, ' ');
+ char buf[1024];
+ sprintf(buf, "%6.2f sec", labelTimes[*i]);
+ cmCTestLog(this->CTest, HANDLER_OUTPUT, "\n"
+ << label << " = " << buf );
if ( this->LogFile )
- {
- *this->LogFile << "\nTime in " << *i << " = "
- << labelTimes[*i] << " sec" << std::endl;
- }
+ {
+ *this->LogFile << "\n" << *i << " = "
+ << buf << "\n";
+ }
+ }
+ if(labels.size())
+ {
+ if(this->LogFile)
+ {
+ *this->LogFile << "\n";
+ }
+ cmCTestLog(this->CTest, HANDLER_OUTPUT, "\n");
}
+
}
//----------------------------------------------------------------------
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index d06a4a7..a8086b6 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -208,6 +208,7 @@ std::string cmCTest::DecodeURL(const std::string& in)
//----------------------------------------------------------------------
cmCTest::cmCTest()
{
+ this->LabelSummary = true;
this->ParallelLevel = 1;
this->SubmitIndex = 0;
this->Failover = false;
@@ -1738,6 +1739,10 @@ void cmCTest::HandleCommandLineArguments(size_t &i,
{
this->ShowLineNumbers = true;
}
+ if(this->CheckArgument(arg, "--no-label-summary"))
+ {
+ this->LabelSummary = false;
+ }
if(this->CheckArgument(arg, "-Q", "--quiet"))
{
this->Quiet = true;
diff --git a/Source/cmCTest.h b/Source/cmCTest.h
index 8ee837f..77bce1a 100644
--- a/Source/cmCTest.h
+++ b/Source/cmCTest.h
@@ -376,11 +376,13 @@ public:
void SetStreams(std::ostream* out, std::ostream* err)
{ this->StreamOut = out; this->StreamErr = err; }
void AddSiteProperties(std::ostream& );
+ bool GetLabelSummary() { return this->LabelSummary;}
private:
std::string ConfigType;
bool Verbose;
bool ExtraVerbose;
bool ProduceXML;
+ bool LabelSummary;
bool Failover;
bool BatchJobs;
diff --git a/Source/ctest.cxx b/Source/ctest.cxx
index 9cb0aab..763e9bd 100644
--- a/Source/ctest.cxx
+++ b/Source/ctest.cxx
@@ -156,6 +156,10 @@ static const char * cmDocumentationOptions[][3] =
"When just running tests not for a dashboard the default is to allow "
"popups and interactive "
"debugging."},
+ {"--no-label-summary", "Disable timing summary information for labels.",
+ "This option tells ctest to not print summary information for each label "
+ "associated with the tests run. If there are no labels on the "
+ "tests, nothing extra is printed."},
{"--build-and-test", "Configure, build and run a test.",
"This option tells ctest to configure (i.e. run cmake on), build, and or "
"execute a test. The configure and test steps are optional. The arguments "