diff --git a/googlemock/src/gmock-spec-builders.cc b/googlemock/src/gmock-spec-builders.cc index 88e0c0200..7b421eeb6 100644 --- a/googlemock/src/gmock-spec-builders.cc +++ b/googlemock/src/gmock-spec-builders.cc @@ -301,6 +301,8 @@ void ReportUninterestingCall(CallReaction reaction, const std::string& msg) { "knowing-when-to-expect-useoncall for details.\n", stack_frames_to_skip); break; + case kFail: + [[fallthrough]]; default: // FAIL Expect(false, nullptr, -1, msg); } diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index ac90786a0..0475b2feb 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -3308,6 +3308,8 @@ static const char* GetAnsiColorCode(GTestColor color) { return "2"; case GTestColor::kYellow: return "3"; + case GTestColor::kDefault: + [[fallthrough]]; default: assert(false); return "9"; @@ -3564,6 +3566,12 @@ void PrettyUnitTestResultPrinter::OnTestPartResult( // If the test part succeeded, we don't need to do anything. case TestPartResult::kSuccess: return; + case TestPartResult::kNonFatalFailure: + [[fallthrough]]; + case TestPartResult::kFatalFailure: + [[fallthrough]]; + case TestPartResult::kSkip: + [[fallthrough]]; default: // Print failure message from the assertion // (e.g. expected this and got that). @@ -3782,6 +3790,12 @@ void BriefUnitTestResultPrinter::OnTestPartResult( // If the test part succeeded, we don't need to do anything. case TestPartResult::kSuccess: return; + case TestPartResult::kNonFatalFailure: + [[fallthrough]]; + case TestPartResult::kFatalFailure: + [[fallthrough]]; + case TestPartResult::kSkip: + [[fallthrough]]; default: // Print failure message from the assertion // (e.g. expected this and got that). diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc index 8ce64d386..93a88cd0e 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -154,7 +154,7 @@ TEST_F(StreamingListenerTest, OnTestEnd) { EXPECT_EQ("event=TestEnd&passed=1&elapsed_time=0ms\n", *output()); } -TEST_F(StreamingListenerTest, OnTestPartResult) { +TEST_F(StreamingListenerTest, OnTestPartResultWithFatalFailure) { *output() = ""; streamer_.OnTestPartResult(TestPartResult(TestPartResult::kFatalFailure, "foo.cc", 42, "failed=\n&%")); @@ -165,6 +165,27 @@ TEST_F(StreamingListenerTest, OnTestPartResult) { *output()); } +TEST_F(StreamingListenerTest, OnTestPartResultWithNonFatalFailure) { + *output() = ""; + streamer_.OnTestPartResult(TestPartResult( + TestPartResult::kNonFatalFailure, "foo.cc", 42, "failed=\n&%")); + + // 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", + *output()); +} + +TEST_F(StreamingListenerTest, OnTestPartResultWithSkip) { + *output() = ""; + streamer_.OnTestPartResult(TestPartResult( + TestPartResult::kSkip, "foo.cc", 42, "failed=\n&%")); + + // 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", + *output()); +} #endif // GTEST_CAN_STREAM_RESULTS_ // Provides access to otherwise private parts of the TestEventListeners class