ENH: Report command line as a measurement and allow user to add custom measurements

This commit is contained in:
Andy Cedilnik 2006-10-13 09:30:33 -04:00
parent 052cb7753b
commit 2f713072c7
3 changed files with 46 additions and 14 deletions

View File

@ -608,6 +608,7 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed,
const std::string& testname = it->Name;
std::vector<std::string>& args = it->Args;
cmCTestTestResult cres;
cres.Properties = &*it;
cres.ExecutionTime = 0;
cres.ReturnValue = -1;
cres.Status = cmCTestTestHandler::NOT_RUN;
@ -1000,6 +1001,20 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os)
<< "name=\"Completion Status\"><Value>"
<< result->CompletionStatus << "</Value></NamedMeasurement>\n";
}
os
<< "\t\t\t<NamedMeasurement type=\"text/string\" "
<< "name=\"Command Line\"><Value>"
<< result->FullCommandLine << "</Value></NamedMeasurement>\n";
std::map<cmStdString,cmStdString>::iterator measureIt;
for ( measureIt = result->Properties->Measurements.begin();
measureIt != result->Properties->Measurements.end();
++ measureIt )
{
os
<< "\t\t\t<NamedMeasurement type=\"text/string\" "
<< "name=\"" << measureIt->first.c_str() << "\"><Value>"
<< measureIt->second.c_str() << "</Value></NamedMeasurement>\n";
}
os
<< "\t\t\t<Measurement>\n"
<< "\t\t\t\t<Value>";
@ -1635,6 +1650,20 @@ bool cmCTestTestHandler::SetTestsProperties(
cmsys::RegularExpression(crit->c_str()));
}
}
if ( key == "MEASUREMENT" )
{
size_t pos = val.find_first_of("=");
if ( pos != val.npos )
{
std::string mKey = val.substr(0, pos);
const char* mVal = val.c_str() + pos + 1;
rtit->Measurements[mKey] = mVal;
}
else
{
rtit->Measurements[val] = "1";
}
}
if ( key == "PASS_REGULAR_EXPRESSION" )
{
std::vector<std::string> lval;

View File

@ -73,6 +73,21 @@ public:
*/
bool SetTestsProperties(const std::vector<std::string>& args);
void Initialize();
protected:
struct cmCTestTestProperties
{
cmStdString Name;
cmStdString Directory;
std::vector<std::string> Args;
std::vector<cmsys::RegularExpression> ErrorRegularExpressions;
std::vector<cmsys::RegularExpression> RequiredRegularExpressions;
std::map<cmStdString, cmStdString> Measurements;
bool IsInBasedOnREOptions;
bool WillFail;
};
struct cmCTestTestResult
{
std::string Name;
@ -85,20 +100,7 @@ public:
std::string Output;
std::string RegressionImages;
int TestCount;
};
void Initialize();
protected:
struct cmCTestTestProperties
{
cmStdString Name;
cmStdString Directory;
std::vector<std::string> Args;
std::vector<cmsys::RegularExpression> ErrorRegularExpressions;
std::vector<cmsys::RegularExpression> RequiredRegularExpressions;
bool IsInBasedOnREOptions;
bool WillFail;
cmCTestTestProperties* Properties;
};

View File

@ -914,6 +914,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
GET_TEST_PROPERTY(kwsys.testFail WILL_FAIL wfv)
SET_TESTS_PROPERTIES(kwsys.testRegistry PROPERTIES FAIL_REGULAR_EXPRESSION "ERROR;FAIL;Test failed")
SET_TESTS_PROPERTIES(kwsys.testRegistry PROPERTIES PASS_REGULAR_EXPRESSION "Test passed")
SET_TESTS_PROPERTIES(kwsys.testFail PROPERTIES MEASUREMENT "Some Key=Some Value")
MESSAGE(STATUS "GET_TEST_PROPERTY returned: ${wfv}")
ENDIF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY AND KWSYS_STANDALONE)
ENDIF(BUILD_TESTING)