Commit 2f713072 authored by Andy Cedilnik's avatar Andy Cedilnik
Browse files

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

parent 052cb775
......@@ -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,20 +73,6 @@ public:
*/
bool SetTestsProperties(const std::vector<std::string>& args);
struct cmCTestTestResult
{
std::string Name;
std::string Path;
std::string FullCommandLine;
double ExecutionTime;
int ReturnValue;
int Status;
std::string CompletionStatus;
std::string Output;
std::string RegressionImages;
int TestCount;
};
void Initialize();
protected:
......@@ -97,10 +83,26 @@ protected:
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;
std::string Path;
std::string FullCommandLine;
double ExecutionTime;
int ReturnValue;
int Status;
std::string CompletionStatus;
std::string Output;
std::string RegressionImages;
int TestCount;
cmCTestTestProperties* Properties;
};
virtual int PreProcessHandler();
virtual int PostProcessHandler();
......
......@@ -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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment