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 80a7edad9..99069a7fe 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -3281,6 +3281,8 @@ static const char* GetAnsiColorCode(GTestColor color) { return "2"; case GTestColor::kYellow: return "3"; + case GTestColor::kDefault: + [[fallthrough]]; default: assert(false); return "9"; @@ -3537,6 +3539,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). @@ -3755,6 +3763,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 3680b918b..9a61dcbd9 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