diff options
author | zhanyong.wan <zhanyong.wan@861a406c-534a-0410-8894-cb66d6ee9925> | 2010-07-26 21:59:50 +0000 |
---|---|---|
committer | zhanyong.wan <zhanyong.wan@861a406c-534a-0410-8894-cb66d6ee9925> | 2010-07-26 21:59:50 +0000 |
commit | 7c598c4f1a44fdda5f97587484c85bef9e93fa98 (patch) | |
tree | a393db9c0cebf32d9a62a2a95e8ade4f5750c62c | |
parent | 598fe2288e8e102d6e6748d496a8dcd59fa5f8a8 (diff) | |
download | googletest-7c598c4f1a44fdda5f97587484c85bef9e93fa98.tar.gz googletest-7c598c4f1a44fdda5f97587484c85bef9e93fa98.tar.bz2 googletest-7c598c4f1a44fdda5f97587484c85bef9e93fa98.zip |
Adds ADD_FAILURE_AT (by Zhanyong Wan); disables -Wswitch-default (by Vlad Losev).
-rw-r--r-- | cmake/internal_utils.cmake | 2 | ||||
-rw-r--r-- | include/gtest/gtest.h | 6 | ||||
-rw-r--r-- | include/gtest/internal/gtest-internal.h | 7 | ||||
-rw-r--r-- | test/gtest_output_test_.cc | 4 | ||||
-rw-r--r-- | test/gtest_output_test_golden_lin.txt | 15 | ||||
-rw-r--r-- | test/gtest_output_test_golden_win.txt | 14 | ||||
-rw-r--r-- | 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 0954e2de..68b79780 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 90dde389..af9d9e7c 100644 --- a/include/gtest/gtest.h +++ b/include/gtest/gtest.h @@ -1627,6 +1627,12 @@ const T* TestWithParam<T>::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 4a20c53c..1e453df6 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 1ac439c6..454e1bad 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 9b30445e..0ba9968c 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 -[0;32m[==========] [mRunning 61 tests from 26 test cases. +[0;32m[==========] [mRunning 62 tests from 27 test cases. [0;32m[----------] [mGlobal 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. [0;31m[ FAILED ] [mFatalFailureInSetUpTest.FailureInSetUp +[0;32m[----------] [m1 test from AddFailureAtTest +[0;32m[ RUN ] [mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber +foo.cc:42: Failure +Failed +Expected failure in foo.cc +[0;31m[ FAILED ] [mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [0;32m[----------] [m4 tests from MixedUpTestCaseTest [0;32m[ RUN ] [mMixedUpTestCaseTest.FirstTestFromNamespaceFoo [0;32m[ OK ] [mMixedUpTestCaseTest.FirstTestFromNamespaceFoo @@ -580,9 +586,9 @@ FooEnvironment::TearDown() called. gtest_output_test_.cc:#: Failure Failed Expected fatal failure. -[0;32m[==========] [m61 tests from 26 test cases ran. +[0;32m[==========] [m62 tests from 27 test cases ran. [0;32m[ PASSED ] [m21 tests. -[0;31m[ FAILED ] [m40 tests, listed below: +[0;31m[ FAILED ] [m41 tests, listed below: [0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInSubroutine [0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInNestedSubroutine [0;31m[ FAILED ] [mFatalFailureTest.NonfatalFailureInSubroutine @@ -597,6 +603,7 @@ Expected fatal failure. [0;31m[ FAILED ] [mFatalFailureInFixtureConstructorTest.FailureInConstructor [0;31m[ FAILED ] [mNonFatalFailureInSetUpTest.FailureInSetUp [0;31m[ FAILED ] [mFatalFailureInSetUpTest.FailureInSetUp +[0;31m[ FAILED ] [mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [0;31m[ FAILED ] [mMixedUpTestCaseTest.ThisShouldFail [0;31m[ FAILED ] [mMixedUpTestCaseTest.ThisShouldFailToo [0;31m[ FAILED ] [mMixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail @@ -624,7 +631,7 @@ Expected fatal failure. [0;31m[ FAILED ] [mScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread [0;31m[ FAILED ] [mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2 -40 FAILED TESTS +41 FAILED TESTS [0;33m YOU HAVE 1 DISABLED TEST [mNote: Google Test filter = FatalFailureTest.*:LoggingTest.* diff --git a/test/gtest_output_test_golden_win.txt b/test/gtest_output_test_golden_win.txt index bf76b8cc..135f39e3 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 e11b6a66..910d4e20 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(), |