ENH: Report command line as a measurement and allow user to add custom measurements
This commit is contained in:
parent
052cb7753b
commit
2f713072c7
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue