Include type in streaming TestPartResult output (fixes #3994).

This commit is contained in:
davidmatson 2023-01-20 12:08:13 -08:00 committed by David Matson
parent ec7b38672c
commit e942cc1c09
2 changed files with 57 additions and 2 deletions

View File

@ -1199,7 +1199,8 @@ 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()));
}
@ -1214,6 +1215,20 @@ class StreamingListener : public EmptyTestEventListener {
std::string FormatBool(bool value) { return value ? "1" : "0"; }
std::string FormatType(TestPartResult::Type value) {
switch (value) {
case TestPartResult::kSkip:
return "skip";
case TestPartResult::kSuccess:
return "success";
case TestPartResult::kNonFatalFailure:
case TestPartResult::kFatalFailure:
return "failure";
default:
return "unknown";
}
}
const std::unique_ptr<AbstractSocketWriter> socket_writer_;
StreamingListener(const StreamingListener&) = delete;

View File

@ -161,7 +161,47 @@ 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());
}
TEST_F(StreamingListenerTest, OnTestPartResultNonFatalFailure) {
*output() = "";
streamer_.OnTestPartResult(TestPartResult(TestPartResult::kNonFatalFailure,
"foo.cc", 42, "Failed"));
EXPECT_EQ(
"event=TestPartResult&type=failure&file=foo.cc&line=42&message=Failed\n",
*output());
}
TEST_F(StreamingListenerTest, OnTestPartResultUnknown) {
*output() = "";
streamer_.OnTestPartResult(TestPartResult((TestPartResult::Type)-1,
"foo.cc", 42, "Other"));
EXPECT_EQ(
"event=TestPartResult&type=unknown&file=foo.cc&line=42&message=Other\n",
*output());
}