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;
|
const std::string& testname = it->Name;
|
||||||
std::vector<std::string>& args = it->Args;
|
std::vector<std::string>& args = it->Args;
|
||||||
cmCTestTestResult cres;
|
cmCTestTestResult cres;
|
||||||
|
cres.Properties = &*it;
|
||||||
cres.ExecutionTime = 0;
|
cres.ExecutionTime = 0;
|
||||||
cres.ReturnValue = -1;
|
cres.ReturnValue = -1;
|
||||||
cres.Status = cmCTestTestHandler::NOT_RUN;
|
cres.Status = cmCTestTestHandler::NOT_RUN;
|
||||||
|
@ -1000,6 +1001,20 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os)
|
||||||
<< "name=\"Completion Status\"><Value>"
|
<< "name=\"Completion Status\"><Value>"
|
||||||
<< result->CompletionStatus << "</Value></NamedMeasurement>\n";
|
<< 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
|
os
|
||||||
<< "\t\t\t<Measurement>\n"
|
<< "\t\t\t<Measurement>\n"
|
||||||
<< "\t\t\t\t<Value>";
|
<< "\t\t\t\t<Value>";
|
||||||
|
@ -1635,6 +1650,20 @@ bool cmCTestTestHandler::SetTestsProperties(
|
||||||
cmsys::RegularExpression(crit->c_str()));
|
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" )
|
if ( key == "PASS_REGULAR_EXPRESSION" )
|
||||||
{
|
{
|
||||||
std::vector<std::string> lval;
|
std::vector<std::string> lval;
|
||||||
|
|
|
@ -73,6 +73,21 @@ public:
|
||||||
*/
|
*/
|
||||||
bool SetTestsProperties(const std::vector<std::string>& args);
|
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
|
struct cmCTestTestResult
|
||||||
{
|
{
|
||||||
std::string Name;
|
std::string Name;
|
||||||
|
@ -85,20 +100,7 @@ public:
|
||||||
std::string Output;
|
std::string Output;
|
||||||
std::string RegressionImages;
|
std::string RegressionImages;
|
||||||
int TestCount;
|
int TestCount;
|
||||||
};
|
cmCTestTestProperties* Properties;
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -914,6 +914,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
|
||||||
GET_TEST_PROPERTY(kwsys.testFail WILL_FAIL wfv)
|
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 FAIL_REGULAR_EXPRESSION "ERROR;FAIL;Test failed")
|
||||||
SET_TESTS_PROPERTIES(kwsys.testRegistry PROPERTIES PASS_REGULAR_EXPRESSION "Test passed")
|
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}")
|
MESSAGE(STATUS "GET_TEST_PROPERTY returned: ${wfv}")
|
||||||
ENDIF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY AND KWSYS_STANDALONE)
|
ENDIF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY AND KWSYS_STANDALONE)
|
||||||
ENDIF(BUILD_TESTING)
|
ENDIF(BUILD_TESTING)
|
||||||
|
|
Loading…
Reference in New Issue