CTest: Show the number of tests for each label in the summary

This commit is contained in:
Betsy McPhail 2015-07-02 10:21:36 -04:00 committed by Brad King
parent 8fbd9584af
commit 42747fcc73
3 changed files with 47 additions and 4 deletions

View File

@ -656,9 +656,8 @@ int cmCTestTestHandler::ProcessHandler()
void cmCTestTestHandler::PrintLabelSummary() void cmCTestTestHandler::PrintLabelSummary()
{ {
cmCTestTestHandler::ListOfTests::iterator it = this->TestList.begin(); cmCTestTestHandler::ListOfTests::iterator it = this->TestList.begin();
cmCTestTestHandler::TestResultsVector::iterator ri =
this->TestResults.begin();
std::map<std::string, double> labelTimes; std::map<std::string, double> labelTimes;
std::map<std::string, int> labelCounts;
std::set<std::string> labels; std::set<std::string> labels;
// initialize maps // initialize maps
std::string::size_type maxlen = 0; std::string::size_type maxlen = 0;
@ -676,10 +675,12 @@ void cmCTestTestHandler::PrintLabelSummary()
} }
labels.insert(*l); labels.insert(*l);
labelTimes[*l] = 0; labelTimes[*l] = 0;
labelCounts[*l] = 0;
} }
} }
} }
ri = this->TestResults.begin(); cmCTestTestHandler::TestResultsVector::iterator ri =
this->TestResults.begin();
// fill maps // fill maps
for(; ri != this->TestResults.end(); ++ri) for(; ri != this->TestResults.end(); ++ri)
{ {
@ -691,6 +692,7 @@ void cmCTestTestHandler::PrintLabelSummary()
l != p.Labels.end(); ++l) l != p.Labels.end(); ++l)
{ {
labelTimes[*l] += result.ExecutionTime; labelTimes[*l] += result.ExecutionTime;
++labelCounts[*l];
} }
} }
} }
@ -705,10 +707,21 @@ void cmCTestTestHandler::PrintLabelSummary()
{ {
std::string label = *i; std::string label = *i;
label.resize(maxlen +3, ' '); label.resize(maxlen +3, ' ');
char buf[1024]; char buf[1024];
sprintf(buf, "%6.2f sec", labelTimes[*i]); sprintf(buf, "%6.2f sec", labelTimes[*i]);
std::ostringstream labelCountStr;
labelCountStr << "(" << labelCounts[*i] << " test";
if (labelCounts[*i] > 1)
{
labelCountStr << "s";
}
labelCountStr << ")";
cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, "\n" cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, "\n"
<< label << " = " << buf, this->Quiet ); << label << " = " << buf << " " << labelCountStr.str(),
this->Quiet );
if ( this->LogFile ) if ( this->LogFile )
{ {
*this->LogFile << "\n" << *i << " = " *this->LogFile << "\n" << *i << " = "

View File

@ -0,0 +1,7 @@
100% tests passed, 0 tests failed out of 4
+
+Label Time Summary:
+'bar' = +[0-9.]+ sec \(3 tests\)
+'foo' = +[0-9.]+ sec \(1 test\)
+
Total Test time \(real\) = +[0-9.]+ sec

View File

@ -54,6 +54,29 @@ add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutpu
endfunction() endfunction()
run_MergeOutput() run_MergeOutput()
function(run_LabelCount)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LabelCount)
set(RunCMake_TEST_NO_CLEAN 1)
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" "
add_test(test1 \"${CMAKE_COMMAND}\" -E echo \"test1\")
set_tests_properties(test1 PROPERTIES LABELS 'bar')
add_test(test2 \"${CMAKE_COMMAND}\" -E echo \"test2\")
set_tests_properties(test2 PROPERTIES LABELS 'bar')
add_test(test3 \"${CMAKE_COMMAND}\" -E echo \"test3\")
set_tests_properties(test3 PROPERTIES LABELS 'foo')
add_test(test4 \"${CMAKE_COMMAND}\" -E echo \"test4\")
set_tests_properties(test4 PROPERTIES LABELS 'bar')
")
run_cmake_command(LabelCount ${CMAKE_CTEST_COMMAND} -V)
endfunction()
run_LabelCount()
function(run_TestLoad name load) function(run_TestLoad name load)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad)