// Generates a fatal failure with a generic message.
#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
+// Like GTEST_FAIL(), but at the given source file location.
+#define GTEST_FAIL_AT(file, line) \
+ GTEST_MESSAGE_AT_(file, line, "Failed", \
+ ::testing::TestPartResult::kFatalFailure)
+
// Define this macro to 1 to omit the definition of FAIL(), which is a
// generic name and clashes with some other libraries.
#if !GTEST_DONT_DEFINE_FAIL
3
Stack trace: (omitted)
-\e[0;32m[==========] \e[mRunning 83 tests from 38 test suites.
+\e[0;32m[==========] \e[mRunning 84 tests from 39 test suites.
\e[0;32m[----------] \e[mGlobal test environment set-up.
FooEnvironment::SetUp() called.
BarEnvironment::SetUp() called.
\e[0;32m[ RUN ] \e[mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber
foo.cc:42: Failure
Failed
-Expected failure in foo.cc
+Expected nonfatal failure in foo.cc
Stack trace: (omitted)
\e[0;31m[ FAILED ] \e[mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber
+\e[0;32m[----------] \e[m1 test from GtestFailAtTest
+\e[0;32m[ RUN ] \e[mGtestFailAtTest.MessageContainsSpecifiedFileAndLineNumber
+foo.cc:42: Failure
+Failed
+Expected fatal failure in foo.cc
+Stack trace: (omitted)
+
+\e[0;31m[ FAILED ] \e[mGtestFailAtTest.MessageContainsSpecifiedFileAndLineNumber
\e[0;32m[----------] \e[m4 tests from MixedUpTestSuiteTest
\e[0;32m[ RUN ] \e[mMixedUpTestSuiteTest.FirstTestFromNamespaceFoo
\e[0;32m[ OK ] \e[mMixedUpTestSuiteTest.FirstTestFromNamespaceFoo
Expected fatal failure.
Stack trace: (omitted)
-\e[0;32m[==========] \e[m83 tests from 38 test suites ran.
+\e[0;32m[==========] \e[m84 tests from 39 test suites ran.
\e[0;32m[ PASSED ] \e[m30 tests.
-\e[0;31m[ FAILED ] \e[m53 tests, listed below:
+\e[0;31m[ FAILED ] \e[m54 tests, listed below:
\e[0;31m[ FAILED ] \e[mNonfatalFailureTest.EscapesStringOperands
\e[0;31m[ FAILED ] \e[mNonfatalFailureTest.DiffForLongStrings
\e[0;31m[ FAILED ] \e[mFatalFailureTest.FatalFailureInSubroutine
\e[0;31m[ FAILED ] \e[mNonFatalFailureInSetUpTest.FailureInSetUp
\e[0;31m[ FAILED ] \e[mFatalFailureInSetUpTest.FailureInSetUp
\e[0;31m[ FAILED ] \e[mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber
+\e[0;31m[ FAILED ] \e[mGtestFailAtTest.MessageContainsSpecifiedFileAndLineNumber
\e[0;31m[ FAILED ] \e[mMixedUpTestSuiteTest.ThisShouldFail
\e[0;31m[ FAILED ] \e[mMixedUpTestSuiteTest.ThisShouldFailToo
\e[0;31m[ FAILED ] \e[mMixedUpTestSuiteWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
\e[0;31m[ FAILED ] \e[mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2
\e[0;31m[ FAILED ] \e[mPrintingStrings/ParamTest.Failure/a, where GetParam() = "a"
-53 FAILED TESTS
+54 FAILED TESTS
\e[0;33m YOU HAVE 1 DISABLED TEST
\e[mNote: Google Test filter = FatalFailureTest.*:LoggingTest.*
}
TEST(AddFailureAtTest, MessageContainsSpecifiedFileAndLineNumber) {
- ADD_FAILURE_AT("foo.cc", 42) << "Expected failure in foo.cc";
+ ADD_FAILURE_AT("foo.cc", 42) << "Expected nonfatal failure in foo.cc";
+}
+
+TEST(GtestFailAtTest, MessageContainsSpecifiedFileAndLineNumber) {
+ GTEST_FAIL_AT("foo.cc", 42) << "Expected fatal failure in foo.cc";
}
#if GTEST_IS_THREADSAFE
"Intentional failure.");
}
+// Tests GTEST_FAIL_AT.
+TEST(MacroTest, GTEST_FAIL_AT) {
+ // Verifies that GTEST_FAIL_AT does generate a fatal failure and
+ // the failure message contains the user-streamed part.
+ EXPECT_FATAL_FAILURE(GTEST_FAIL_AT("foo.cc", 42) << "Wrong!", "Wrong!");
+
+ // Verifies that the user-streamed part is optional.
+ EXPECT_FATAL_FAILURE(GTEST_FAIL_AT("foo.cc", 42), "Failed");
+
+ // See the ADD_FAIL_AT test above to see how we test that the failure message
+ // contains the right filename and line number -- the same applies here.
+}
+
// Tests SUCCEED
TEST(MacroTest, SUCCEED) {
SUCCEED();