From 7c598c4f1a44fdda5f97587484c85bef9e93fa98 Mon Sep 17 00:00:00 2001 From: "zhanyong.wan" Date: Mon, 26 Jul 2010 21:59:50 +0000 Subject: Adds ADD_FAILURE_AT (by Zhanyong Wan); disables -Wswitch-default (by Vlad Losev). --- cmake/internal_utils.cmake | 2 +- include/gtest/gtest.h | 6 ++++++ include/gtest/internal/gtest-internal.h | 7 +++++-- test/gtest_output_test_.cc | 4 ++++ test/gtest_output_test_golden_lin.txt | 15 +++++++++++---- test/gtest_output_test_golden_win.txt | 14 ++++++++++---- test/gtest_unittest.cc | 15 +++++++++++++++ 7 files changed, 52 insertions(+), 11 deletions(-) diff --git a/cmake/internal_utils.cmake b/cmake/internal_utils.cmake index 0954e2d..68b7978 100644 --- a/cmake/internal_utils.cmake +++ b/cmake/internal_utils.cmake @@ -54,7 +54,7 @@ elseif (CMAKE_COMPILER_IS_GNUCXX) # whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI # explicitly. set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0") - set(cxx_strict_flags "-Wextra -Wswitch-default") + set(cxx_strict_flags "-Wextra") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") set(cxx_exception_flags "-features=except") # Sun Pro doesn't provide macros to indicate whether exceptions and diff --git a/include/gtest/gtest.h b/include/gtest/gtest.h index 90dde38..af9d9e7 100644 --- a/include/gtest/gtest.h +++ b/include/gtest/gtest.h @@ -1627,6 +1627,12 @@ const T* TestWithParam::parameter_ = NULL; // Generates a nonfatal failure with a generic message. #define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") +// Generates a nonfatal failure at the given source file location with +// a generic message. +#define ADD_FAILURE_AT(file, line) \ + GTEST_MESSAGE_AT_(file, line, "Failed", \ + ::testing::TestPartResult::kNonFatalFailure) + // Generates a fatal failure with a generic message. #define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") diff --git a/include/gtest/internal/gtest-internal.h b/include/gtest/internal/gtest-internal.h index 4a20c53..1e453df 100644 --- a/include/gtest/internal/gtest-internal.h +++ b/include/gtest/internal/gtest-internal.h @@ -1064,10 +1064,13 @@ class NativeArray { } // namespace internal } // namespace testing -#define GTEST_MESSAGE_(message, result_type) \ - ::testing::internal::AssertHelper(result_type, __FILE__, __LINE__, message) \ +#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ + ::testing::internal::AssertHelper(result_type, file, line, message) \ = ::testing::Message() +#define GTEST_MESSAGE_(message, result_type) \ + GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) + #define GTEST_FATAL_FAILURE_(message) \ return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) diff --git a/test/gtest_output_test_.cc b/test/gtest_output_test_.cc index 1ac439c..454e1ba 100644 --- a/test/gtest_output_test_.cc +++ b/test/gtest_output_test_.cc @@ -441,6 +441,10 @@ TEST_F(FatalFailureInSetUpTest, FailureInSetUp) { << "We should never get here, as SetUp() failed."; } +TEST(AddFailureAtTest, MessageContainsSpecifiedFileAndLineNumber) { + ADD_FAILURE_AT("foo.cc", 42) << "Expected failure in foo.cc"; +} + #if GTEST_OS_WINDOWS // This group of tests verifies that Google Test handles SEH and C++ diff --git a/test/gtest_output_test_golden_lin.txt b/test/gtest_output_test_golden_lin.txt index 9b30445..0ba9968 100644 --- a/test/gtest_output_test_golden_lin.txt +++ b/test/gtest_output_test_golden_lin.txt @@ -7,7 +7,7 @@ Expected: true gtest_output_test_.cc:#: Failure Value of: 3 Expected: 2 -[==========] Running 61 tests from 26 test cases. +[==========] Running 62 tests from 27 test cases. [----------] Global test environment set-up. FooEnvironment::SetUp() called. BarEnvironment::SetUp() called. @@ -235,6 +235,12 @@ gtest_output_test_.cc:#: Failure Failed Expected failure #3, in the test fixture d'tor. [ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[----------] 1 test from AddFailureAtTest +[ RUN ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber +foo.cc:42: Failure +Failed +Expected failure in foo.cc +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [----------] 4 tests from MixedUpTestCaseTest [ RUN ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo [ OK ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo @@ -580,9 +586,9 @@ FooEnvironment::TearDown() called. gtest_output_test_.cc:#: Failure Failed Expected fatal failure. -[==========] 61 tests from 26 test cases ran. +[==========] 62 tests from 27 test cases ran. [ PASSED ] 21 tests. -[ FAILED ] 40 tests, listed below: +[ FAILED ] 41 tests, listed below: [ FAILED ] FatalFailureTest.FatalFailureInSubroutine [ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine [ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine @@ -597,6 +603,7 @@ Expected fatal failure. [ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor [ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp [ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [ FAILED ] MixedUpTestCaseTest.ThisShouldFail [ FAILED ] MixedUpTestCaseTest.ThisShouldFailToo [ FAILED ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail @@ -624,7 +631,7 @@ Expected fatal failure. [ FAILED ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread [ FAILED ] PrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2 -40 FAILED TESTS +41 FAILED TESTS  YOU HAVE 1 DISABLED TEST Note: Google Test filter = FatalFailureTest.*:LoggingTest.* diff --git a/test/gtest_output_test_golden_win.txt b/test/gtest_output_test_golden_win.txt index bf76b8c..135f39e 100644 --- a/test/gtest_output_test_golden_win.txt +++ b/test/gtest_output_test_golden_win.txt @@ -5,7 +5,7 @@ gtest_output_test_.cc:#: error: Value of: false Expected: true gtest_output_test_.cc:#: error: Value of: 3 Expected: 2 -[==========] Running 62 tests from 28 test cases. +[==========] Running 63 tests from 29 test cases. [----------] Global test environment set-up. FooEnvironment::SetUp() called. BarEnvironment::SetUp() called. @@ -173,6 +173,11 @@ Expected failure #2, in TearDown(). gtest_output_test_.cc:#: error: Failed Expected failure #3, in the test fixture d'tor. [ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[----------] 1 test from AddFailureAtTest +[ RUN ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber +foo.cc(42): error: Failed +Expected failure in foo.cc +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [----------] 1 test from ExceptionInFixtureCtorTest [ RUN ] ExceptionInFixtureCtorTest.ExceptionInFixtureCtor (expecting a failure on thrown exception in the test fixture's constructor) @@ -492,9 +497,9 @@ Expected non-fatal failure. FooEnvironment::TearDown() called. gtest_output_test_.cc:#: error: Failed Expected fatal failure. -[==========] 62 tests from 28 test cases ran. +[==========] 63 tests from 29 test cases ran. [ PASSED ] 21 tests. -[ FAILED ] 41 tests, listed below: +[ FAILED ] 42 tests, listed below: [ FAILED ] FatalFailureTest.FatalFailureInSubroutine [ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine [ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine @@ -508,6 +513,7 @@ Expected fatal failure. [ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor [ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp [ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [ FAILED ] ExceptionInFixtureCtorTest.ExceptionInFixtureCtor [ FAILED ] ExceptionInSetUpTest.ExceptionInSetUp [ FAILED ] ExceptionInTestFunctionTest.SEH @@ -537,7 +543,7 @@ Expected fatal failure. [ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads [ FAILED ] PrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2 -41 FAILED TESTS +42 FAILED TESTS YOU HAVE 1 DISABLED TEST Note: Google Test filter = FatalFailureTest.*:LoggingTest.* diff --git a/test/gtest_unittest.cc b/test/gtest_unittest.cc index e11b6a6..910d4e2 100644 --- a/test/gtest_unittest.cc +++ b/test/gtest_unittest.cc @@ -4393,6 +4393,21 @@ TEST(MacroTest, ADD_FAILURE) { EXPECT_FALSE(aborted); } +// Tests ADD_FAILURE_AT. +TEST(MacroTest, ADD_FAILURE_AT) { + // Verifies that ADD_FAILURE_AT does generate a nonfatal failure and + // the failure message contains the user-streamed part. + EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42) << "Wrong!", "Wrong!"); + + // Verifies that the user-streamed part is optional. + EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42), "Failed"); + + // Unfortunately, we cannot verify that the failure message contains + // the right file path and line number the same way, as + // EXPECT_NONFATAL_FAILURE() doesn't get to see the file path and + // line number. Instead, we do that in gtest_output_test_.cc. +} + // Tests FAIL. TEST(MacroTest, FAIL) { EXPECT_FATAL_FAILURE(FAIL(), -- cgit v0.12