mirror of
https://github.com/google/googletest.git
synced 2025-03-10 09:16:48 +00:00
Googletest export
Adds ISO8601 timestamps to XML output and RFC3339 timestamps to JSON output. Adds timestamps to testsuites, testsuite and testcases structured JSON/XML output for better reporting how/where time is spent on tests. PiperOrigin-RevId: 260039817
This commit is contained in:
parent
373ed74af5
commit
2134e3fd85
@ -588,6 +588,10 @@ class GTEST_API_ TestResult {
|
|||||||
// Returns the elapsed time, in milliseconds.
|
// Returns the elapsed time, in milliseconds.
|
||||||
TimeInMillis elapsed_time() const { return elapsed_time_; }
|
TimeInMillis elapsed_time() const { return elapsed_time_; }
|
||||||
|
|
||||||
|
// Gets the time of the test case start, in ms from the start of the
|
||||||
|
// UNIX epoch.
|
||||||
|
TimeInMillis start_timestamp() const { return start_timestamp_; }
|
||||||
|
|
||||||
// Returns the i-th test part result among all the results. i can range from 0
|
// Returns the i-th test part result among all the results. i can range from 0
|
||||||
// to total_part_count() - 1. If i is not in that range, aborts the program.
|
// to total_part_count() - 1. If i is not in that range, aborts the program.
|
||||||
const TestPartResult& GetTestPartResult(int i) const;
|
const TestPartResult& GetTestPartResult(int i) const;
|
||||||
@ -618,6 +622,9 @@ class GTEST_API_ TestResult {
|
|||||||
return test_properties_;
|
return test_properties_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sets the start time.
|
||||||
|
void set_start_timestamp(TimeInMillis start) { start_timestamp_ = start; }
|
||||||
|
|
||||||
// Sets the elapsed time.
|
// Sets the elapsed time.
|
||||||
void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
|
void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
|
||||||
|
|
||||||
@ -661,6 +668,8 @@ class GTEST_API_ TestResult {
|
|||||||
std::vector<TestProperty> test_properties_;
|
std::vector<TestProperty> test_properties_;
|
||||||
// Running count of death tests.
|
// Running count of death tests.
|
||||||
int death_test_count_;
|
int death_test_count_;
|
||||||
|
// The start time, in milliseconds since UNIX Epoch.
|
||||||
|
TimeInMillis start_timestamp_;
|
||||||
// The elapsed time, in milliseconds.
|
// The elapsed time, in milliseconds.
|
||||||
TimeInMillis elapsed_time_;
|
TimeInMillis elapsed_time_;
|
||||||
|
|
||||||
@ -881,6 +890,10 @@ class GTEST_API_ TestSuite {
|
|||||||
// Returns the elapsed time, in milliseconds.
|
// Returns the elapsed time, in milliseconds.
|
||||||
TimeInMillis elapsed_time() const { return elapsed_time_; }
|
TimeInMillis elapsed_time() const { return elapsed_time_; }
|
||||||
|
|
||||||
|
// Gets the time of the test suite start, in ms from the start of the
|
||||||
|
// UNIX epoch.
|
||||||
|
TimeInMillis start_timestamp() const { return start_timestamp_; }
|
||||||
|
|
||||||
// Returns the i-th test among all the tests. i can range from 0 to
|
// Returns the i-th test among all the tests. i can range from 0 to
|
||||||
// total_test_count() - 1. If i is not in that range, returns NULL.
|
// total_test_count() - 1. If i is not in that range, returns NULL.
|
||||||
const TestInfo* GetTestInfo(int i) const;
|
const TestInfo* GetTestInfo(int i) const;
|
||||||
@ -999,6 +1012,8 @@ class GTEST_API_ TestSuite {
|
|||||||
internal::TearDownTestSuiteFunc tear_down_tc_;
|
internal::TearDownTestSuiteFunc tear_down_tc_;
|
||||||
// True iff any test in this test suite should run.
|
// True iff any test in this test suite should run.
|
||||||
bool should_run_;
|
bool should_run_;
|
||||||
|
// The start time, in milliseconds since UNIX Epoch.
|
||||||
|
TimeInMillis start_timestamp_;
|
||||||
// Elapsed time, in milliseconds.
|
// Elapsed time, in milliseconds.
|
||||||
TimeInMillis elapsed_time_;
|
TimeInMillis elapsed_time_;
|
||||||
// Holds test properties recorded during execution of SetUpTestSuite and
|
// Holds test properties recorded during execution of SetUpTestSuite and
|
||||||
|
@ -2032,9 +2032,7 @@ std::string AppendUserMessage(const std::string& gtest_msg,
|
|||||||
|
|
||||||
// Creates an empty TestResult.
|
// Creates an empty TestResult.
|
||||||
TestResult::TestResult()
|
TestResult::TestResult()
|
||||||
: death_test_count_(0),
|
: death_test_count_(0), start_timestamp_(0), elapsed_time_(0) {}
|
||||||
elapsed_time_(0) {
|
|
||||||
}
|
|
||||||
|
|
||||||
// D'tor.
|
// D'tor.
|
||||||
TestResult::~TestResult() {
|
TestResult::~TestResult() {
|
||||||
@ -2103,13 +2101,7 @@ static const char* const kReservedTestSuitesAttributes[] = {
|
|||||||
// The list of reserved attributes used in the <testsuite> element of XML
|
// The list of reserved attributes used in the <testsuite> element of XML
|
||||||
// output.
|
// output.
|
||||||
static const char* const kReservedTestSuiteAttributes[] = {
|
static const char* const kReservedTestSuiteAttributes[] = {
|
||||||
"disabled",
|
"disabled", "errors", "failures", "name", "tests", "time", "timestamp"};
|
||||||
"errors",
|
|
||||||
"failures",
|
|
||||||
"name",
|
|
||||||
"tests",
|
|
||||||
"time"
|
|
||||||
};
|
|
||||||
|
|
||||||
// The list of reserved attributes used in the <testcase> element of XML output.
|
// The list of reserved attributes used in the <testcase> element of XML output.
|
||||||
static const char* const kReservedTestCaseAttributes[] = {
|
static const char* const kReservedTestCaseAttributes[] = {
|
||||||
@ -2117,10 +2109,10 @@ static const char* const kReservedTestCaseAttributes[] = {
|
|||||||
"value_param", "file", "line"};
|
"value_param", "file", "line"};
|
||||||
|
|
||||||
// Use a slightly different set for allowed output to ensure existing tests can
|
// Use a slightly different set for allowed output to ensure existing tests can
|
||||||
// still RecordProperty("result")
|
// still RecordProperty("result") or "RecordProperty(timestamp")
|
||||||
static const char* const kReservedOutputTestCaseAttributes[] = {
|
static const char* const kReservedOutputTestCaseAttributes[] = {
|
||||||
"classname", "name", "status", "time", "type_param",
|
"classname", "name", "status", "time", "type_param",
|
||||||
"value_param", "file", "line", "result"};
|
"value_param", "file", "line", "result", "timestamp"};
|
||||||
|
|
||||||
template <int kSize>
|
template <int kSize>
|
||||||
std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
|
std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
|
||||||
@ -2705,6 +2697,7 @@ void TestInfo::Run() {
|
|||||||
test, &Test::DeleteSelf_, "the test fixture's destructor");
|
test, &Test::DeleteSelf_, "the test fixture's destructor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result_.set_start_timestamp(start);
|
||||||
result_.set_elapsed_time(internal::GetTimeInMillis() - start);
|
result_.set_elapsed_time(internal::GetTimeInMillis() - start);
|
||||||
|
|
||||||
// Notifies the unit test event listener that a test has just finished.
|
// Notifies the unit test event listener that a test has just finished.
|
||||||
@ -2774,6 +2767,7 @@ TestSuite::TestSuite(const char* a_name, const char* a_type_param,
|
|||||||
set_up_tc_(set_up_tc),
|
set_up_tc_(set_up_tc),
|
||||||
tear_down_tc_(tear_down_tc),
|
tear_down_tc_(tear_down_tc),
|
||||||
should_run_(false),
|
should_run_(false),
|
||||||
|
start_timestamp_(0),
|
||||||
elapsed_time_(0) {}
|
elapsed_time_(0) {}
|
||||||
|
|
||||||
// Destructor of TestSuite.
|
// Destructor of TestSuite.
|
||||||
@ -2823,11 +2817,11 @@ void TestSuite::Run() {
|
|||||||
internal::HandleExceptionsInMethodIfSupported(
|
internal::HandleExceptionsInMethodIfSupported(
|
||||||
this, &TestSuite::RunSetUpTestSuite, "SetUpTestSuite()");
|
this, &TestSuite::RunSetUpTestSuite, "SetUpTestSuite()");
|
||||||
|
|
||||||
const internal::TimeInMillis start = internal::GetTimeInMillis();
|
start_timestamp_ = internal::GetTimeInMillis();
|
||||||
for (int i = 0; i < total_test_count(); i++) {
|
for (int i = 0; i < total_test_count(); i++) {
|
||||||
GetMutableTestInfo(i)->Run();
|
GetMutableTestInfo(i)->Run();
|
||||||
}
|
}
|
||||||
elapsed_time_ = internal::GetTimeInMillis() - start;
|
elapsed_time_ = internal::GetTimeInMillis() - start_timestamp_;
|
||||||
|
|
||||||
impl->os_stack_trace_getter()->UponLeavingGTest();
|
impl->os_stack_trace_getter()->UponLeavingGTest();
|
||||||
internal::HandleExceptionsInMethodIfSupported(
|
internal::HandleExceptionsInMethodIfSupported(
|
||||||
@ -3788,6 +3782,9 @@ void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
|
|||||||
: "suppressed");
|
: "suppressed");
|
||||||
OutputXmlAttribute(stream, kTestsuite, "time",
|
OutputXmlAttribute(stream, kTestsuite, "time",
|
||||||
FormatTimeInMillisAsSeconds(result.elapsed_time()));
|
FormatTimeInMillisAsSeconds(result.elapsed_time()));
|
||||||
|
OutputXmlAttribute(
|
||||||
|
stream, kTestsuite, "timestamp",
|
||||||
|
FormatEpochTimeInMillisAsIso8601(result.start_timestamp()));
|
||||||
OutputXmlAttribute(stream, kTestsuite, "classname", test_suite_name);
|
OutputXmlAttribute(stream, kTestsuite, "classname", test_suite_name);
|
||||||
|
|
||||||
int failures = 0;
|
int failures = 0;
|
||||||
@ -3838,6 +3835,9 @@ void XmlUnitTestResultPrinter::PrintXmlTestSuite(std::ostream* stream,
|
|||||||
OutputXmlAttribute(stream, kTestsuite, "errors", "0");
|
OutputXmlAttribute(stream, kTestsuite, "errors", "0");
|
||||||
OutputXmlAttribute(stream, kTestsuite, "time",
|
OutputXmlAttribute(stream, kTestsuite, "time",
|
||||||
FormatTimeInMillisAsSeconds(test_suite.elapsed_time()));
|
FormatTimeInMillisAsSeconds(test_suite.elapsed_time()));
|
||||||
|
OutputXmlAttribute(
|
||||||
|
stream, kTestsuite, "timestamp",
|
||||||
|
FormatEpochTimeInMillisAsIso8601(test_suite.start_timestamp()));
|
||||||
*stream << TestPropertiesAsXmlAttributes(test_suite.ad_hoc_test_result());
|
*stream << TestPropertiesAsXmlAttributes(test_suite.ad_hoc_test_result());
|
||||||
}
|
}
|
||||||
*stream << ">\n";
|
*stream << ">\n";
|
||||||
@ -3864,11 +3864,11 @@ void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
|
|||||||
stream, kTestsuites, "disabled",
|
stream, kTestsuites, "disabled",
|
||||||
StreamableToString(unit_test.reportable_disabled_test_count()));
|
StreamableToString(unit_test.reportable_disabled_test_count()));
|
||||||
OutputXmlAttribute(stream, kTestsuites, "errors", "0");
|
OutputXmlAttribute(stream, kTestsuites, "errors", "0");
|
||||||
|
OutputXmlAttribute(stream, kTestsuites, "time",
|
||||||
|
FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
|
||||||
OutputXmlAttribute(
|
OutputXmlAttribute(
|
||||||
stream, kTestsuites, "timestamp",
|
stream, kTestsuites, "timestamp",
|
||||||
FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
|
FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
|
||||||
OutputXmlAttribute(stream, kTestsuites, "time",
|
|
||||||
FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
|
|
||||||
|
|
||||||
if (GTEST_FLAG(shuffle)) {
|
if (GTEST_FLAG(shuffle)) {
|
||||||
OutputXmlAttribute(stream, kTestsuites, "random_seed",
|
OutputXmlAttribute(stream, kTestsuites, "random_seed",
|
||||||
@ -4156,6 +4156,9 @@ void JsonUnitTestResultPrinter::OutputJsonTestInfo(::std::ostream* stream,
|
|||||||
? (result.Skipped() ? "SKIPPED" : "COMPLETED")
|
? (result.Skipped() ? "SKIPPED" : "COMPLETED")
|
||||||
: "SUPPRESSED",
|
: "SUPPRESSED",
|
||||||
kIndent);
|
kIndent);
|
||||||
|
OutputJsonKey(stream, kTestsuite, "timestamp",
|
||||||
|
FormatEpochTimeInMillisAsRFC3339(result.start_timestamp()),
|
||||||
|
kIndent);
|
||||||
OutputJsonKey(stream, kTestsuite, "time",
|
OutputJsonKey(stream, kTestsuite, "time",
|
||||||
FormatTimeInMillisAsDuration(result.elapsed_time()), kIndent);
|
FormatTimeInMillisAsDuration(result.elapsed_time()), kIndent);
|
||||||
OutputJsonKey(stream, kTestsuite, "classname", test_suite_name, kIndent,
|
OutputJsonKey(stream, kTestsuite, "classname", test_suite_name, kIndent,
|
||||||
@ -4202,6 +4205,10 @@ void JsonUnitTestResultPrinter::PrintJsonTestSuite(
|
|||||||
OutputJsonKey(stream, kTestsuite, "disabled",
|
OutputJsonKey(stream, kTestsuite, "disabled",
|
||||||
test_suite.reportable_disabled_test_count(), kIndent);
|
test_suite.reportable_disabled_test_count(), kIndent);
|
||||||
OutputJsonKey(stream, kTestsuite, "errors", 0, kIndent);
|
OutputJsonKey(stream, kTestsuite, "errors", 0, kIndent);
|
||||||
|
OutputJsonKey(
|
||||||
|
stream, kTestsuite, "timestamp",
|
||||||
|
FormatEpochTimeInMillisAsRFC3339(test_suite.start_timestamp()),
|
||||||
|
kIndent);
|
||||||
OutputJsonKey(stream, kTestsuite, "time",
|
OutputJsonKey(stream, kTestsuite, "time",
|
||||||
FormatTimeInMillisAsDuration(test_suite.elapsed_time()),
|
FormatTimeInMillisAsDuration(test_suite.elapsed_time()),
|
||||||
kIndent, false);
|
kIndent, false);
|
||||||
|
@ -67,11 +67,14 @@ EXPECTED_1 = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'TestSomeProperties',
|
u'name': u'TestSomeProperties',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'PropertyOne',
|
u'classname': u'PropertyOne',
|
||||||
u'SetUpProp': u'1',
|
u'SetUpProp': u'1',
|
||||||
u'TestSomeProperty': u'1',
|
u'TestSomeProperty': u'1',
|
||||||
@ -108,10 +111,13 @@ EXPECTED_2 = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'TestSomeProperties',
|
u'name': u'TestSomeProperties',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
u'classname': u'PropertyTwo',
|
u'classname': u'PropertyTwo',
|
||||||
u'SetUpProp': u'2',
|
u'SetUpProp': u'2',
|
||||||
|
@ -73,8 +73,7 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'42',
|
u'42',
|
||||||
u'name':
|
u'name':
|
||||||
u'AllTests',
|
u'AllTests',
|
||||||
u'testsuites': [
|
u'testsuites': [{
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'SuccessfulTest',
|
u'SuccessfulTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -87,15 +86,17 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'Succeeds',
|
u'name': u'Succeeds',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'SuccessfulTest'
|
u'classname': u'SuccessfulTest'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'FailedTest',
|
u'FailedTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -108,6 +109,8 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name':
|
u'name':
|
||||||
u'Fails',
|
u'Fails',
|
||||||
@ -117,6 +120,8 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'COMPLETED',
|
u'COMPLETED',
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'classname':
|
u'classname':
|
||||||
u'FailedTest',
|
u'FailedTest',
|
||||||
u'failures': [{
|
u'failures': [{
|
||||||
@ -126,8 +131,7 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'type': u''
|
u'type': u''
|
||||||
}]
|
}]
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'DisabledTest',
|
u'DisabledTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -140,15 +144,17 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'DISABLED_test_not_run',
|
u'name': u'DISABLED_test_not_run',
|
||||||
u'status': u'NOTRUN',
|
u'status': u'NOTRUN',
|
||||||
u'result': u'SUPPRESSED',
|
u'result': u'SUPPRESSED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'DisabledTest'
|
u'classname': u'DisabledTest'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'SkippedTest',
|
u'SkippedTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -161,15 +167,17 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'Skipped',
|
u'name': u'Skipped',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'SKIPPED',
|
u'result': u'SKIPPED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'SkippedTest'
|
u'classname': u'SkippedTest'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'MixedResultTest',
|
u'MixedResultTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -182,15 +190,16 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
u'testsuite': [
|
u'timestamp':
|
||||||
{
|
u'*',
|
||||||
|
u'testsuite': [{
|
||||||
u'name': u'Succeeds',
|
u'name': u'Succeeds',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'MixedResultTest'
|
u'classname': u'MixedResultTest'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'Fails',
|
u'Fails',
|
||||||
u'status':
|
u'status':
|
||||||
@ -199,32 +208,30 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'COMPLETED',
|
u'COMPLETED',
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'classname':
|
u'classname':
|
||||||
u'MixedResultTest',
|
u'MixedResultTest',
|
||||||
u'failures':
|
u'failures': [{
|
||||||
[{
|
|
||||||
u'failure': u'gtest_xml_output_unittest_.cc:*\n'
|
u'failure': u'gtest_xml_output_unittest_.cc:*\n'
|
||||||
u'Expected equality of these values:\n'
|
u'Expected equality of these values:\n'
|
||||||
u' 1\n 2' + STACK_TRACE_TEMPLATE,
|
u' 1\n 2' + STACK_TRACE_TEMPLATE,
|
||||||
u'type': u''
|
u'type': u''
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'failure': u'gtest_xml_output_unittest_.cc:*\n'
|
u'failure': u'gtest_xml_output_unittest_.cc:*\n'
|
||||||
u'Expected equality of these values:\n'
|
u'Expected equality of these values:\n'
|
||||||
u' 2\n 3' + STACK_TRACE_TEMPLATE,
|
u' 2\n 3' + STACK_TRACE_TEMPLATE,
|
||||||
u'type': u''
|
u'type': u''
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'DISABLED_test',
|
u'name': u'DISABLED_test',
|
||||||
u'status': u'NOTRUN',
|
u'status': u'NOTRUN',
|
||||||
u'result': u'SUPPRESSED',
|
u'result': u'SUPPRESSED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'MixedResultTest'
|
u'classname': u'MixedResultTest'
|
||||||
}
|
}]
|
||||||
]
|
}, {
|
||||||
},
|
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'XmlQuotingTest',
|
u'XmlQuotingTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -237,6 +244,8 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name':
|
u'name':
|
||||||
u'OutputsCData',
|
u'OutputsCData',
|
||||||
@ -246,6 +255,8 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'COMPLETED',
|
u'COMPLETED',
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'classname':
|
u'classname':
|
||||||
u'XmlQuotingTest',
|
u'XmlQuotingTest',
|
||||||
u'failures': [{
|
u'failures': [{
|
||||||
@ -256,8 +267,7 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'type': u''
|
u'type': u''
|
||||||
}]
|
}]
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'InvalidCharactersTest',
|
u'InvalidCharactersTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -270,6 +280,8 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name':
|
u'name':
|
||||||
u'InvalidCharactersInMessage',
|
u'InvalidCharactersInMessage',
|
||||||
@ -279,6 +291,8 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'COMPLETED',
|
u'COMPLETED',
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'classname':
|
u'classname':
|
||||||
u'InvalidCharactersTest',
|
u'InvalidCharactersTest',
|
||||||
u'failures': [{
|
u'failures': [{
|
||||||
@ -288,8 +302,7 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'type': u''
|
u'type': u''
|
||||||
}]
|
}]
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'PropertyRecordingTest',
|
u'PropertyRecordingTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -302,6 +315,8 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'SetUpTestSuite':
|
u'SetUpTestSuite':
|
||||||
u'yes',
|
u'yes',
|
||||||
u'TearDownTestSuite':
|
u'TearDownTestSuite':
|
||||||
@ -311,37 +326,37 @@ EXPECTED_NON_EMPTY = {
|
|||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'PropertyRecordingTest',
|
u'classname': u'PropertyRecordingTest',
|
||||||
u'key_1': u'1'
|
u'key_1': u'1'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'IntValuedProperty',
|
u'name': u'IntValuedProperty',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'PropertyRecordingTest',
|
u'classname': u'PropertyRecordingTest',
|
||||||
u'key_int': u'1'
|
u'key_int': u'1'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'ThreeProperties',
|
u'name': u'ThreeProperties',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'PropertyRecordingTest',
|
u'classname': u'PropertyRecordingTest',
|
||||||
u'key_1': u'1',
|
u'key_1': u'1',
|
||||||
u'key_2': u'2',
|
u'key_2': u'2',
|
||||||
u'key_3': u'3'
|
u'key_3': u'3'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'TwoValuesForOneKeyUsesLastValue',
|
u'name': u'TwoValuesForOneKeyUsesLastValue',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'PropertyRecordingTest',
|
u'classname': u'PropertyRecordingTest',
|
||||||
u'key_1': u'2'
|
u'key_1': u'2'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'NoFixtureTest',
|
u'NoFixtureTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -354,40 +369,34 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
u'testsuite': [
|
u'timestamp':
|
||||||
{
|
u'*',
|
||||||
|
u'testsuite': [{
|
||||||
u'name': u'RecordProperty',
|
u'name': u'RecordProperty',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'NoFixtureTest',
|
u'classname': u'NoFixtureTest',
|
||||||
u'key': u'1'
|
u'key': u'1'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'ExternalUtilityThatCallsRecordIntValuedProperty',
|
u'name': u'ExternalUtilityThatCallsRecordIntValuedProperty',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'NoFixtureTest',
|
u'classname': u'NoFixtureTest',
|
||||||
u'key_for_utility_int': u'1'
|
u'key_for_utility_int': u'1'
|
||||||
},
|
}, {
|
||||||
{
|
u'name': u'ExternalUtilityThatCallsRecordStringValuedProperty',
|
||||||
u'name':
|
u'status': u'RUN',
|
||||||
u'ExternalUtilityThatCallsRecordStringValuedProperty',
|
u'result': u'COMPLETED',
|
||||||
u'status':
|
u'time': u'*',
|
||||||
u'RUN',
|
u'timestamp': u'*',
|
||||||
u'result':
|
u'classname': u'NoFixtureTest',
|
||||||
u'COMPLETED',
|
u'key_for_utility_string': u'1'
|
||||||
u'time':
|
}]
|
||||||
u'*',
|
}, {
|
||||||
u'classname':
|
|
||||||
u'NoFixtureTest',
|
|
||||||
u'key_for_utility_string':
|
|
||||||
u'1'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'TypedTest/0',
|
u'TypedTest/0',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -400,16 +409,18 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'HasTypeParamAttribute',
|
u'name': u'HasTypeParamAttribute',
|
||||||
u'type_param': u'int',
|
u'type_param': u'int',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'TypedTest/0'
|
u'classname': u'TypedTest/0'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'TypedTest/1',
|
u'TypedTest/1',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -422,16 +433,18 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'HasTypeParamAttribute',
|
u'name': u'HasTypeParamAttribute',
|
||||||
u'type_param': u'long',
|
u'type_param': u'long',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'TypedTest/1'
|
u'classname': u'TypedTest/1'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'Single/TypeParameterizedTestSuite/0',
|
u'Single/TypeParameterizedTestSuite/0',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -444,16 +457,18 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'HasTypeParamAttribute',
|
u'name': u'HasTypeParamAttribute',
|
||||||
u'type_param': u'int',
|
u'type_param': u'int',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'Single/TypeParameterizedTestSuite/0'
|
u'classname': u'Single/TypeParameterizedTestSuite/0'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'Single/TypeParameterizedTestSuite/1',
|
u'Single/TypeParameterizedTestSuite/1',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -466,16 +481,18 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'HasTypeParamAttribute',
|
u'name': u'HasTypeParamAttribute',
|
||||||
u'type_param': u'long',
|
u'type_param': u'long',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'Single/TypeParameterizedTestSuite/1'
|
u'classname': u'Single/TypeParameterizedTestSuite/1'
|
||||||
}]
|
}]
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name':
|
u'name':
|
||||||
u'Single/ValueParamTest',
|
u'Single/ValueParamTest',
|
||||||
u'tests':
|
u'tests':
|
||||||
@ -488,42 +505,42 @@ EXPECTED_NON_EMPTY = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
u'testsuite': [
|
u'timestamp':
|
||||||
{
|
u'*',
|
||||||
|
u'testsuite': [{
|
||||||
u'name': u'HasValueParamAttribute/0',
|
u'name': u'HasValueParamAttribute/0',
|
||||||
u'value_param': u'33',
|
u'value_param': u'33',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'Single/ValueParamTest'
|
u'classname': u'Single/ValueParamTest'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'HasValueParamAttribute/1',
|
u'name': u'HasValueParamAttribute/1',
|
||||||
u'value_param': u'42',
|
u'value_param': u'42',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'Single/ValueParamTest'
|
u'classname': u'Single/ValueParamTest'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'AnotherTestThatHasValueParamAttribute/0',
|
u'name': u'AnotherTestThatHasValueParamAttribute/0',
|
||||||
u'value_param': u'33',
|
u'value_param': u'33',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'Single/ValueParamTest'
|
u'classname': u'Single/ValueParamTest'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
u'name': u'AnotherTestThatHasValueParamAttribute/1',
|
u'name': u'AnotherTestThatHasValueParamAttribute/1',
|
||||||
u'value_param': u'42',
|
u'value_param': u'42',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'Single/ValueParamTest'
|
u'classname': u'Single/ValueParamTest'
|
||||||
}
|
}]
|
||||||
]
|
}]
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPECTED_FILTERED = {
|
EXPECTED_FILTERED = {
|
||||||
@ -556,11 +573,14 @@ EXPECTED_FILTERED = {
|
|||||||
0,
|
0,
|
||||||
u'time':
|
u'time':
|
||||||
u'*',
|
u'*',
|
||||||
|
u'timestamp':
|
||||||
|
u'*',
|
||||||
u'testsuite': [{
|
u'testsuite': [{
|
||||||
u'name': u'Succeeds',
|
u'name': u'Succeeds',
|
||||||
u'status': u'RUN',
|
u'status': u'RUN',
|
||||||
u'result': u'COMPLETED',
|
u'result': u'COMPLETED',
|
||||||
u'time': u'*',
|
u'time': u'*',
|
||||||
|
u'timestamp': u'*',
|
||||||
u'classname': u'SuccessfulTest',
|
u'classname': u'SuccessfulTest',
|
||||||
}]
|
}]
|
||||||
}],
|
}],
|
||||||
|
@ -42,8 +42,8 @@ GTEST_OUTPUT_2_TEST = "gtest_xml_outfile2_test_"
|
|||||||
|
|
||||||
EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
|
EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
|
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
|
||||||
<testsuite name="PropertyOne" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="PropertyOne" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="TestSomeProperties" status="run" result="completed" time="*" classname="PropertyOne">
|
<testcase name="TestSomeProperties" status="run" result="completed" time="*" timestamp="*" classname="PropertyOne">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="SetUpProp" value="1"/>
|
<property name="SetUpProp" value="1"/>
|
||||||
<property name="TestSomeProperty" value="1"/>
|
<property name="TestSomeProperty" value="1"/>
|
||||||
@ -56,8 +56,8 @@ EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
|
|||||||
|
|
||||||
EXPECTED_XML_2 = """<?xml version="1.0" encoding="UTF-8"?>
|
EXPECTED_XML_2 = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
|
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
|
||||||
<testsuite name="PropertyTwo" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="PropertyTwo" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="TestSomeProperties" status="run" result="completed" time="*" classname="PropertyTwo">
|
<testcase name="TestSomeProperties" status="run" result="completed" time="*" timestamp="*" classname="PropertyTwo">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="SetUpProp" value="2"/>
|
<property name="SetUpProp" value="2"/>
|
||||||
<property name="TestSomeProperty" value="2"/>
|
<property name="TestSomeProperty" value="2"/>
|
||||||
|
@ -66,20 +66,20 @@ else:
|
|||||||
|
|
||||||
EXPECTED_NON_EMPTY_XML = """<?xml version="1.0" encoding="UTF-8"?>
|
EXPECTED_NON_EMPTY_XML = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuites tests="24" failures="4" disabled="2" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
|
<testsuites tests="24" failures="4" disabled="2" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
|
||||||
<testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="Succeeds" status="run" result="completed" time="*" classname="SuccessfulTest"/>
|
<testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="SuccessfulTest"/>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="FailedTest" tests="1" failures="1" disabled="0" errors="0" time="*">
|
<testsuite name="FailedTest" tests="1" failures="1" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="Fails" status="run" result="completed" time="*" classname="FailedTest">
|
<testcase name="Fails" status="run" result="completed" time="*" timestamp="*" classname="FailedTest">
|
||||||
<failure message="gtest_xml_output_unittest_.cc:*
Expected equality of these values:
 1
 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
<failure message="gtest_xml_output_unittest_.cc:*
Expected equality of these values:
 1
 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||||
Expected equality of these values:
|
Expected equality of these values:
|
||||||
1
|
1
|
||||||
2%(stack)s]]></failure>
|
2%(stack)s]]></failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="MixedResultTest" tests="3" failures="1" disabled="1" errors="0" time="*">
|
<testsuite name="MixedResultTest" tests="3" failures="1" disabled="1" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="Succeeds" status="run" result="completed" time="*" classname="MixedResultTest"/>
|
<testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="MixedResultTest"/>
|
||||||
<testcase name="Fails" status="run" result="completed" time="*" classname="MixedResultTest">
|
<testcase name="Fails" status="run" result="completed" time="*" timestamp="*" classname="MixedResultTest">
|
||||||
<failure message="gtest_xml_output_unittest_.cc:*
Expected equality of these values:
 1
 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
<failure message="gtest_xml_output_unittest_.cc:*
Expected equality of these values:
 1
 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||||
Expected equality of these values:
|
Expected equality of these values:
|
||||||
1
|
1
|
||||||
@ -89,86 +89,86 @@ Expected equality of these values:
|
|||||||
2
|
2
|
||||||
3%(stack)s]]></failure>
|
3%(stack)s]]></failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase name="DISABLED_test" status="notrun" result="suppressed" time="*" classname="MixedResultTest"/>
|
<testcase name="DISABLED_test" status="notrun" result="suppressed" time="*" timestamp="*" classname="MixedResultTest"/>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="XmlQuotingTest" tests="1" failures="1" disabled="0" errors="0" time="*">
|
<testsuite name="XmlQuotingTest" tests="1" failures="1" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="OutputsCData" status="run" result="completed" time="*" classname="XmlQuotingTest">
|
<testcase name="OutputsCData" status="run" result="completed" time="*" timestamp="*" classname="XmlQuotingTest">
|
||||||
<failure message="gtest_xml_output_unittest_.cc:*
Failed
XML output: <?xml encoding="utf-8"><top><![CDATA[cdata text]]></top>" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
<failure message="gtest_xml_output_unittest_.cc:*
Failed
XML output: <?xml encoding="utf-8"><top><![CDATA[cdata text]]></top>" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||||
Failed
|
Failed
|
||||||
XML output: <?xml encoding="utf-8"><top><![CDATA[cdata text]]>]]><![CDATA[</top>%(stack)s]]></failure>
|
XML output: <?xml encoding="utf-8"><top><![CDATA[cdata text]]>]]><![CDATA[</top>%(stack)s]]></failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="InvalidCharactersTest" tests="1" failures="1" disabled="0" errors="0" time="*">
|
<testsuite name="InvalidCharactersTest" tests="1" failures="1" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="InvalidCharactersInMessage" status="run" result="completed" time="*" classname="InvalidCharactersTest">
|
<testcase name="InvalidCharactersInMessage" status="run" result="completed" time="*" timestamp="*" classname="InvalidCharactersTest">
|
||||||
<failure message="gtest_xml_output_unittest_.cc:*
Failed
Invalid characters in brackets []" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
<failure message="gtest_xml_output_unittest_.cc:*
Failed
Invalid characters in brackets []" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||||
Failed
|
Failed
|
||||||
Invalid characters in brackets []%(stack)s]]></failure>
|
Invalid characters in brackets []%(stack)s]]></failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="DisabledTest" tests="1" failures="0" disabled="1" errors="0" time="*">
|
<testsuite name="DisabledTest" tests="1" failures="0" disabled="1" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="DISABLED_test_not_run" status="notrun" result="suppressed" time="*" classname="DisabledTest"/>
|
<testcase name="DISABLED_test_not_run" status="notrun" result="suppressed" time="*" timestamp="*" classname="DisabledTest"/>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="SkippedTest" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="SkippedTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="Skipped" status="run" result="skipped" time="*" classname="SkippedTest"/>
|
<testcase name="Skipped" status="run" result="skipped" time="*" timestamp="*" classname="SkippedTest"/>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="PropertyRecordingTest" tests="4" failures="0" disabled="0" errors="0" time="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
|
<testsuite name="PropertyRecordingTest" tests="4" failures="0" disabled="0" errors="0" time="*" timestamp="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
|
||||||
<testcase name="OneProperty" status="run" result="completed" time="*" classname="PropertyRecordingTest">
|
<testcase name="OneProperty" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key_1" value="1"/>
|
<property name="key_1" value="1"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase name="IntValuedProperty" status="run" result="completed" time="*" classname="PropertyRecordingTest">
|
<testcase name="IntValuedProperty" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key_int" value="1"/>
|
<property name="key_int" value="1"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase name="ThreeProperties" status="run" result="completed" time="*" classname="PropertyRecordingTest">
|
<testcase name="ThreeProperties" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key_1" value="1"/>
|
<property name="key_1" value="1"/>
|
||||||
<property name="key_2" value="2"/>
|
<property name="key_2" value="2"/>
|
||||||
<property name="key_3" value="3"/>
|
<property name="key_3" value="3"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase name="TwoValuesForOneKeyUsesLastValue" status="run" result="completed" time="*" classname="PropertyRecordingTest">
|
<testcase name="TwoValuesForOneKeyUsesLastValue" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key_1" value="2"/>
|
<property name="key_1" value="2"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="NoFixtureTest" tests="3" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="NoFixtureTest" tests="3" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="RecordProperty" status="run" result="completed" time="*" classname="NoFixtureTest">
|
<testcase name="RecordProperty" status="run" result="completed" time="*" timestamp="*" classname="NoFixtureTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key" value="1"/>
|
<property name="key" value="1"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase name="ExternalUtilityThatCallsRecordIntValuedProperty" status="run" result="completed" time="*" classname="NoFixtureTest">
|
<testcase name="ExternalUtilityThatCallsRecordIntValuedProperty" status="run" result="completed" time="*" timestamp="*" classname="NoFixtureTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key_for_utility_int" value="1"/>
|
<property name="key_for_utility_int" value="1"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase name="ExternalUtilityThatCallsRecordStringValuedProperty" status="run" result="completed" time="*" classname="NoFixtureTest">
|
<testcase name="ExternalUtilityThatCallsRecordStringValuedProperty" status="run" result="completed" time="*" timestamp="*" classname="NoFixtureTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key_for_utility_string" value="1"/>
|
<property name="key_for_utility_string" value="1"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="Single/ValueParamTest" tests="4" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="Single/ValueParamTest" tests="4" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="HasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" classname="Single/ValueParamTest" />
|
<testcase name="HasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
|
||||||
<testcase name="HasValueParamAttribute/1" value_param="42" status="run" result="completed" time="*" classname="Single/ValueParamTest" />
|
<testcase name="HasValueParamAttribute/1" value_param="42" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
|
||||||
<testcase name="AnotherTestThatHasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" classname="Single/ValueParamTest" />
|
<testcase name="AnotherTestThatHasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
|
||||||
<testcase name="AnotherTestThatHasValueParamAttribute/1" value_param="42" status="run" result="completed" time="*" classname="Single/ValueParamTest" />
|
<testcase name="AnotherTestThatHasValueParamAttribute/1" value_param="42" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="TypedTest/0" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="TypedTest/0" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" classname="TypedTest/0" />
|
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="TypedTest/0" />
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="TypedTest/1" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="TypedTest/1" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" classname="TypedTest/1" />
|
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="TypedTest/1" />
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="Single/TypeParameterizedTestSuite/0" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="Single/TypeParameterizedTestSuite/0" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" classname="Single/TypeParameterizedTestSuite/0" />
|
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="Single/TypeParameterizedTestSuite/0" />
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="Single/TypeParameterizedTestSuite/1" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="Single/TypeParameterizedTestSuite/1" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" classname="Single/TypeParameterizedTestSuite/1" />
|
<testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="Single/TypeParameterizedTestSuite/1" />
|
||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>""" % {
|
</testsuites>""" % {
|
||||||
'stack': STACK_TRACE_TEMPLATE
|
'stack': STACK_TRACE_TEMPLATE
|
||||||
@ -178,25 +178,25 @@ EXPECTED_FILTERED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
|
|||||||
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*"
|
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*"
|
||||||
timestamp="*" name="AllTests" ad_hoc_property="42">
|
timestamp="*" name="AllTests" ad_hoc_property="42">
|
||||||
<testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0"
|
<testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0"
|
||||||
errors="0" time="*">
|
errors="0" time="*" timestamp="*">
|
||||||
<testcase name="Succeeds" status="run" result="completed" time="*" classname="SuccessfulTest"/>
|
<testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="SuccessfulTest"/>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>"""
|
</testsuites>"""
|
||||||
|
|
||||||
EXPECTED_SHARDED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
|
EXPECTED_SHARDED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuites tests="3" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
|
<testsuites tests="3" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
|
||||||
<testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="Succeeds" status="run" result="completed" time="*" classname="SuccessfulTest"/>
|
<testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="SuccessfulTest"/>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="PropertyRecordingTest" tests="1" failures="0" disabled="0" errors="0" time="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
|
<testsuite name="PropertyRecordingTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
|
||||||
<testcase name="TwoValuesForOneKeyUsesLastValue" status="run" result="completed" time="*" classname="PropertyRecordingTest">
|
<testcase name="TwoValuesForOneKeyUsesLastValue" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="key_1" value="2"/>
|
<property name="key_1" value="2"/>
|
||||||
</properties>
|
</properties>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="Single/ValueParamTest" tests="1" failures="0" disabled="0" errors="0" time="*">
|
<testsuite name="Single/ValueParamTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
|
||||||
<testcase name="AnotherTestThatHasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" classname="Single/ValueParamTest" />
|
<testcase name="AnotherTestThatHasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
|
||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>"""
|
</testsuites>"""
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
|
|||||||
* The stack traces are removed.
|
* The stack traces are removed.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if element.tagName == 'testsuites':
|
if element.tagName in ('testsuites', 'testsuite', 'testcase'):
|
||||||
timestamp = element.getAttributeNode('timestamp')
|
timestamp = element.getAttributeNode('timestamp')
|
||||||
timestamp.value = re.sub(r'^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d$',
|
timestamp.value = re.sub(r'^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d$',
|
||||||
'*', timestamp.value)
|
'*', timestamp.value)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user