aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCopybara-Service <copybara-worker@google.com>2024-04-08 13:02:42 -0700
committerCopybara-Service <copybara-worker@google.com>2024-04-08 13:02:42 -0700
commit3d73dee972d0db344bda9b659836612aba6a3564 (patch)
tree373b25443a5edf952a220c38f5a9c4c42872bf89
parentf10e11fb27301fba21caa71030bb5024e67aa135 (diff)
parentf16770d63dcb69019c0547b26a4a433d2cc62bd7 (diff)
downloadgoogletest-3d73dee972d0db344bda9b659836612aba6a3564.tar.gz
Merge pull request #4508 from davidmatson:addJsonSkipped
PiperOrigin-RevId: 622929007 Change-Id: Ifaf5a701baee74503e6845f32ebc27425882e950
-rw-r--r--googletest/src/gtest.cc59
-rw-r--r--googletest/test/googletest-json-output-unittest.py15
-rw-r--r--googletest/test/gtest_json_test_utils.py3
3 files changed, 61 insertions, 16 deletions
diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc
index a9977072..d64c18d7 100644
--- a/googletest/src/gtest.cc
+++ b/googletest/src/gtest.cc
@@ -4743,26 +4743,53 @@ void JsonUnitTestResultPrinter::OutputJsonTestResult(::std::ostream* stream,
const TestResult& result) {
const std::string kIndent = Indent(10);
- int failures = 0;
- for (int i = 0; i < result.total_part_count(); ++i) {
- const TestPartResult& part = result.GetTestPartResult(i);
- if (part.failed()) {
- *stream << ",\n";
- if (++failures == 1) {
- *stream << kIndent << "\"" << "failures" << "\": [\n";
+ {
+ int failures = 0;
+ for (int i = 0; i < result.total_part_count(); ++i) {
+ const TestPartResult& part = result.GetTestPartResult(i);
+ if (part.failed()) {
+ *stream << ",\n";
+ if (++failures == 1) {
+ *stream << kIndent << "\"" << "failures" << "\": [\n";
+ }
+ const std::string location =
+ internal::FormatCompilerIndependentFileLocation(part.file_name(),
+ part.line_number());
+ const std::string message =
+ EscapeJson(location + "\n" + part.message());
+ *stream << kIndent << " {\n"
+ << kIndent << " \"failure\": \"" << message << "\",\n"
+ << kIndent << " \"type\": \"\"\n"
+ << kIndent << " }";
+ }
+ }
+
+ if (failures > 0) *stream << "\n" << kIndent << "]";
+ }
+
+ {
+ int skipped = 0;
+ for (int i = 0; i < result.total_part_count(); ++i) {
+ const TestPartResult& part = result.GetTestPartResult(i);
+ if (part.skipped()) {
+ *stream << ",\n";
+ if (++skipped == 1) {
+ *stream << kIndent << "\"" << "skipped" << "\": [\n";
+ }
+ const std::string location =
+ internal::FormatCompilerIndependentFileLocation(part.file_name(),
+ part.line_number());
+ const std::string message =
+ EscapeJson(location + "\n" + part.message());
+ *stream << kIndent << " {\n"
+ << kIndent << " \"message\": \"" << message << "\"\n"
+ << kIndent << " }";
}
- const std::string location =
- internal::FormatCompilerIndependentFileLocation(part.file_name(),
- part.line_number());
- const std::string message = EscapeJson(location + "\n" + part.message());
- *stream << kIndent << " {\n"
- << kIndent << " \"failure\": \"" << message << "\",\n"
- << kIndent << " \"type\": \"\"\n"
- << kIndent << " }";
}
+
+ if (skipped > 0) *stream << "\n" << kIndent << "]";
}
- if (failures > 0) *stream << "\n" << kIndent << "]";
*stream << "\n" << Indent(8) << "}";
}
diff --git a/googletest/test/googletest-json-output-unittest.py b/googletest/test/googletest-json-output-unittest.py
index cb976945..d3338e3d 100644
--- a/googletest/test/googletest-json-output-unittest.py
+++ b/googletest/test/googletest-json-output-unittest.py
@@ -150,6 +150,9 @@ EXPECTED_NON_EMPTY = {
'time': '*',
'timestamp': '*',
'classname': 'SkippedTest',
+ 'skipped': [
+ {'message': 'gtest_xml_output_unittest_.cc:*\n\n'}
+ ],
},
{
'name': 'SkippedWithMessage',
@@ -160,6 +163,12 @@ EXPECTED_NON_EMPTY = {
'time': '*',
'timestamp': '*',
'classname': 'SkippedTest',
+ 'skipped': [{
+ 'message': (
+ 'gtest_xml_output_unittest_.cc:*\n'
+ 'It is good practice to tell why you skip a test.\n'
+ )
+ }],
},
{
'name': 'SkippedAfterFailure',
@@ -179,6 +188,12 @@ EXPECTED_NON_EMPTY = {
),
'type': '',
}],
+ 'skipped': [{
+ 'message': (
+ 'gtest_xml_output_unittest_.cc:*\n'
+ 'It is good practice to tell why you skip a test.\n'
+ )
+ }],
},
],
},
diff --git a/googletest/test/gtest_json_test_utils.py b/googletest/test/gtest_json_test_utils.py
index 86a5925b..694a7a60 100644
--- a/googletest/test/gtest_json_test_utils.py
+++ b/googletest/test/gtest_json_test_utils.py
@@ -51,6 +51,9 @@ def normalize(obj):
elif key == 'failure':
value = re.sub(r'^.*[/\\](.*:)\d+\n', '\\1*\n', value)
return re.sub(r'Stack trace:\n(.|\n)*', 'Stack trace:\n*', value)
+ elif key == 'message':
+ value = re.sub(r'^.*[/\\](.*:)\d+\n', '\\1*\n', value)
+ return re.sub(r'Stack trace:\n(.|\n)*', 'Stack trace:\n*', value)
elif key == 'file':
return re.sub(r'^.*[/\\](.*)', '\\1', value)
else: