From f652edbcbad3a675336c81d0343956ac7a26f798 Mon Sep 17 00:00:00 2001 From: davidmatson Date: Fri, 20 Jan 2023 12:08:13 -0800 Subject: [PATCH] Include type in streaming TestPartResult output (fixes #3994). --- googletest/src/gtest-internal-inl.h | 17 ++++++++++++++++- googletest/test/gtest_unittest.cc | 22 +++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/googletest/src/gtest-internal-inl.h b/googletest/src/gtest-internal-inl.h index cc6f00488f..0dad3fc455 100644 --- a/googletest/src/gtest-internal-inl.h +++ b/googletest/src/gtest-internal-inl.h @@ -1199,12 +1199,27 @@ class StreamingListener : public EmptyTestEventListener { void OnTestPartResult(const TestPartResult& test_part_result) override { const char* file_name = test_part_result.file_name(); if (file_name == nullptr) file_name = ""; - SendLn("event=TestPartResult&file=" + UrlEncode(file_name) + + SendLn("event=TestPartResult&type=" + FormatType(test_part_result.type()) + + "&file=" + UrlEncode(file_name) + "&line=" + StreamableToString(test_part_result.line_number()) + "&message=" + UrlEncode(test_part_result.message())); } private: + static const char* FormatType(TestPartResult::Type type) { + switch (type) { + case TestPartResult::kSkip: + return "skip"; + case TestPartResult::kSuccess: + return "success"; + case TestPartResult::kNonFatalFailure: + case TestPartResult::kFatalFailure: + return "failure"; + default: + return "unknown"; + } + } + // Sends the given message and a newline to the socket. void SendLn(const std::string& message) { socket_writer_->SendLn(message); } diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc index 0b383ea7c8..9bdbf83b66 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -161,7 +161,27 @@ TEST_F(StreamingListenerTest, OnTestPartResult) { // Meta characters in the failure message should be properly escaped. EXPECT_EQ( - "event=TestPartResult&file=foo.cc&line=42&message=failed%3D%0A%26%25\n", + "event=TestPartResult&type=failure&file=foo.cc&line=42&message=failed%3D%0A%26%25\n", + *output()); +} + +TEST_F(StreamingListenerTest, OnTestPartResultSkip) { + *output() = ""; + streamer_.OnTestPartResult(TestPartResult(TestPartResult::kSkip, + "foo.cc", 42, "Skipped")); + + EXPECT_EQ( + "event=TestPartResult&type=skip&file=foo.cc&line=42&message=Skipped\n", + *output()); +} + +TEST_F(StreamingListenerTest, OnTestPartResultSuccess) { + *output() = ""; + streamer_.OnTestPartResult(TestPartResult(TestPartResult::kSuccess, + "foo.cc", 42, "Succeeded")); + + EXPECT_EQ( + "event=TestPartResult&type=success&file=foo.cc&line=42&message=Succeeded\n", *output()); }