From 5864e885ebbd7ae2f4c808b69cbcf9a4d2ab012b Mon Sep 17 00:00:00 2001 From: Anthony Graca Date: Tue, 2 Nov 2021 11:52:29 -0700 Subject: [PATCH 1/2] Applied C++ Core Guidelines Enum.2 Rule. Problem: switch statements should cover all cases. Solution: Added missing enumerations in switch statements and added [[fallthrough]] attribute to denote that the default case is the desired case for these missing enumerations. --- googlemock/src/gmock-spec-builders.cc | 2 ++ googletest/src/gtest.cc | 14 ++++++++++++ googletest/test/gtest_unittest.cc | 32 +++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/googlemock/src/gmock-spec-builders.cc b/googlemock/src/gmock-spec-builders.cc index df023e49..3a7a7ce3 100644 --- a/googlemock/src/gmock-spec-builders.cc +++ b/googlemock/src/gmock-spec-builders.cc @@ -300,6 +300,8 @@ void ReportUninterestingCall(CallReaction reaction, const std::string& msg) { "knowing-when-to-expect 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 44d5d5bf..384b1716 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -3254,6 +3254,8 @@ static const char* GetAnsiColorCode(GTestColor color) { return "2"; case GTestColor::kYellow: return "3"; + case GTestColor::kDefault: + [[fallthrough]]; default: return nullptr; } @@ -3502,6 +3504,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). @@ -3719,6 +3727,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 c079f463..90142423 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -146,6 +146,38 @@ TEST_F(StreamingListenerTest, OnTestPartResult) { *output()); } +TEST_F(StreamingListenerTest, OnTestPartResult) { + *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, OnTestPartResult) { + *output() = ""; + streamer_.OnTestPartResult(TestPartResult( + TestPartResult::kFatalFailure, "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, OnTestPartResult) { + *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 From 914fa51f21b274c2327909d4a4683d97a233aaa2 Mon Sep 17 00:00:00 2001 From: Anthony Graca Date: Tue, 2 Nov 2021 18:40:16 -0700 Subject: [PATCH 2/2] Changed redundant unit test names to be unique --- googletest/test/gtest_unittest.cc | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc index 90142423..1317ff4a 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -135,7 +135,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&%")); @@ -146,7 +146,7 @@ TEST_F(StreamingListenerTest, OnTestPartResult) { *output()); } -TEST_F(StreamingListenerTest, OnTestPartResult) { +TEST_F(StreamingListenerTest, OnTestPartResultWithNonFatalFailure) { *output() = ""; streamer_.OnTestPartResult(TestPartResult( TestPartResult::kNonFatalFailure, "foo.cc", 42, "failed=\n&%")); @@ -157,18 +157,7 @@ TEST_F(StreamingListenerTest, OnTestPartResult) { *output()); } -TEST_F(StreamingListenerTest, OnTestPartResult) { - *output() = ""; - streamer_.OnTestPartResult(TestPartResult( - TestPartResult::kFatalFailure, "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, OnTestPartResult) { +TEST_F(StreamingListenerTest, OnTestPartResultWithSkip) { *output() = ""; streamer_.OnTestPartResult(TestPartResult( TestPartResult::kSkip, "foo.cc", 42, "failed=\n&%"));