Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
886cafd4
Commit
886cafd4
authored
Feb 08, 2009
by
zhanyong.wan
Browse files
Fixes the definition of GTEST_HAS_EXCEPTIONS, allowing exception assertions to be used with gcc.
parent
37504994
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
74 additions
and
49 deletions
+74
-49
include/gtest/internal/gtest-port.h
include/gtest/internal/gtest-port.h
+19
-16
test/gtest_output_test_golden_lin.txt
test/gtest_output_test_golden_lin.txt
+20
-6
test/gtest_unittest.cc
test/gtest_unittest.cc
+35
-27
No files found.
include/gtest/internal/gtest-port.h
View file @
886cafd4
...
...
@@ -207,28 +207,31 @@
#endif // GTEST_OS_LINUX
// Determines whether ::std::string and ::string are available.
#ifndef GTEST_HAS_STD_STRING
// The user didn't tell us whether ::std::string is available, so we
// need to figure it out.
// Defines GTEST_HAS_EXCEPTIONS to 1 if exceptions are enabled, or 0
// otherwise.
#ifdef
GTEST_OS_WINDOWS
#ifdef
_MSC_VER // Compiled by MSVC?
// Assumes that exceptions are enabled by default.
#ifndef _HAS_EXCEPTIONS
#ifndef _HAS_EXCEPTIONS
// MSVC uses this macro to enable exceptions.
#define _HAS_EXCEPTIONS 1
#endif // _HAS_EXCEPTIONS
// GTEST_HAS_EXCEPTIONS is non-zero iff exceptions are enabled. It is
// always defined, while _HAS_EXCEPTIONS is defined only on Windows.
#define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
// On Windows, we can use ::std::string if the compiler version is VS
// 2005 or above, or if exceptions are enabled.
#define GTEST_HAS_STD_STRING ((_MSC_VER >= 1400) || GTEST_HAS_EXCEPTIONS)
#else // We are on Linux or Mac OS.
#define GTEST_HAS_EXCEPTIONS 0
#define GTEST_HAS_STD_STRING 1
#endif // GTEST_OS_WINDOWS
#else // The compiler is not MSVC.
// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. For
// other compilers, we assume exceptions are disabled to be
// conservative.
#define GTEST_HAS_EXCEPTIONS (defined(__GNUC__) && __EXCEPTIONS)
#endif // _MSC_VER
// Determines whether ::std::string and ::string are available.
#ifndef GTEST_HAS_STD_STRING
// The user didn't tell us whether ::std::string is available, so we
// need to figure it out. The only environment that we know
// ::std::string is not available is MSVC 7.1 or lower with exceptions
// disabled.
#define GTEST_HAS_STD_STRING \
(!(defined(_MSC_VER) && (_MSC_VER < 1400) && !GTEST_HAS_EXCEPTIONS))
#endif // GTEST_HAS_STD_STRING
#ifndef GTEST_HAS_GLOBAL_STRING
...
...
test/gtest_output_test_golden_lin.txt
View file @
886cafd4
...
...
@@ -7,7 +7,7 @@ Expected: true
gtest_output_test_.cc:#: Failure
Value of: 3
Expected: 2
[0;32m[==========] [mRunning 5
2
tests from 22 test cases.
[0;32m[==========] [mRunning 5
4
tests from 22 test cases.
[0;32m[----------] [mGlobal test environment set-up.
FooEnvironment::SetUp() called.
BarEnvironment::SetUp() called.
...
...
@@ -270,7 +270,7 @@ test DefinedUsingTEST is defined using TEST. You probably
want to change the TEST to TEST_F or move it to another test
case.
[0;31m[ FAILED ] [mTEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail
[0;32m[----------] [m
7
tests from ExpectNonfatalFailureTest
[0;32m[----------] [m
8
tests from ExpectNonfatalFailureTest
[0;32m[ RUN ] [mExpectNonfatalFailureTest.CanReferenceGlobalVariables
[0;32m[ OK ] [mExpectNonfatalFailureTest.CanReferenceGlobalVariables
[0;32m[ RUN ] [mExpectNonfatalFailureTest.CanReferenceLocalVariables
...
...
@@ -313,7 +313,13 @@ gtest.cc:#: Failure
Expected: 1 non-fatal failure
Actual: 0 failures
[0;31m[ FAILED ] [mExpectNonfatalFailureTest.FailsWhenStatementReturns
[0;32m[----------] [m7 tests from ExpectFatalFailureTest
[0;32m[ RUN ] [mExpectNonfatalFailureTest.FailsWhenStatementThrows
(expecting a failure)
gtest.cc:#: Failure
Expected: 1 non-fatal failure
Actual: 0 failures
[0;31m[ FAILED ] [mExpectNonfatalFailureTest.FailsWhenStatementThrows
[0;32m[----------] [m8 tests from ExpectFatalFailureTest
[0;32m[ RUN ] [mExpectFatalFailureTest.CanReferenceGlobalVariables
[0;32m[ OK ] [mExpectFatalFailureTest.CanReferenceGlobalVariables
[0;32m[ RUN ] [mExpectFatalFailureTest.CanReferenceLocalStaticVariables
...
...
@@ -356,6 +362,12 @@ gtest.cc:#: Failure
Expected: 1 fatal failure
Actual: 0 failures
[0;31m[ FAILED ] [mExpectFatalFailureTest.FailsWhenStatementReturns
[0;32m[ RUN ] [mExpectFatalFailureTest.FailsWhenStatementThrows
(expecting a failure)
gtest.cc:#: Failure
Expected: 1 fatal failure
Actual: 0 failures
[0;31m[ FAILED ] [mExpectFatalFailureTest.FailsWhenStatementThrows
[0;32m[----------] [m2 tests from TypedTest/0, where TypeParam = int
[0;32m[ RUN ] [mTypedTest/0.Success
[0;32m[ OK ] [mTypedTest/0.Success
...
...
@@ -496,9 +508,9 @@ FooEnvironment::TearDown() called.
gtest_output_test_.cc:#: Failure
Failed
Expected fatal failure.
[0;32m[==========] [m5
2
tests from 22 test cases ran.
[0;32m[==========] [m5
4
tests from 22 test cases ran.
[0;32m[ PASSED ] [m19 tests.
[0;31m[ FAILED ] [m3
3
tests, listed below:
[0;31m[ FAILED ] [m3
5
tests, listed below:
[0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInSubroutine
[0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInNestedSubroutine
[0;31m[ FAILED ] [mFatalFailureTest.NonfatalFailureInSubroutine
...
...
@@ -521,10 +533,12 @@ Expected fatal failure.
[0;31m[ FAILED ] [mExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures
[0;31m[ FAILED ] [mExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure
[0;31m[ FAILED ] [mExpectNonfatalFailureTest.FailsWhenStatementReturns
[0;31m[ FAILED ] [mExpectNonfatalFailureTest.FailsWhenStatementThrows
[0;31m[ FAILED ] [mExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure
[0;31m[ FAILED ] [mExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures
[0;31m[ FAILED ] [mExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure
[0;31m[ FAILED ] [mExpectFatalFailureTest.FailsWhenStatementReturns
[0;31m[ FAILED ] [mExpectFatalFailureTest.FailsWhenStatementThrows
[0;31m[ FAILED ] [mTypedTest/0.Failure, where TypeParam = int
[0;31m[ FAILED ] [mUnsigned/TypedTestP/0.Failure, where TypeParam = unsigned char
[0;31m[ FAILED ] [mUnsigned/TypedTestP/1.Failure, where TypeParam = unsigned int
...
...
@@ -533,7 +547,7 @@ Expected fatal failure.
[0;31m[ FAILED ] [mExpectFailureTest.ExpectFatalFailureOnAllThreads
[0;31m[ FAILED ] [mExpectFailureTest.ExpectNonFatalFailureOnAllThreads
3
3
FAILED TESTS
3
5
FAILED TESTS
[0;33m YOU HAVE 1 DISABLED TEST
[mNote: Google Test filter = FatalFailureTest.*:LoggingTest.*
...
...
test/gtest_unittest.cc
View file @
886cafd4
...
...
@@ -2869,31 +2869,37 @@ TEST(AssertionTest, ASSERT_GT) {
#if GTEST_HAS_EXCEPTIONS
void
ThrowNothing
()
{}
// Tests ASSERT_THROW.
TEST
(
AssertionTest
,
ASSERT_THROW
)
{
ASSERT_THROW
(
ThrowAnInteger
(),
int
);
EXPECT_FATAL_FAILURE
(
ASSERT_THROW
(
ThrowAnInteger
(),
bool
),
"Expected: ThrowAnInteger() throws an exception of type"
\
" bool.
\n
Actual: it throws a different type."
);
EXPECT_FATAL_FAILURE
(
ASSERT_THROW
(
1
,
bool
),
"Expected: 1 throws an exception of type bool.
\n
"
\
" Actual: it throws nothing."
);
EXPECT_FATAL_FAILURE
(
ASSERT_THROW
(
ThrowAnInteger
(),
bool
),
"Expected: ThrowAnInteger() throws an exception of type bool.
\n
"
" Actual: it throws a different type."
);
EXPECT_FATAL_FAILURE
(
ASSERT_THROW
(
ThrowNothing
(),
bool
),
"Expected: ThrowNothing() throws an exception of type bool.
\n
"
" Actual: it throws nothing."
);
}
// Tests ASSERT_NO_THROW.
TEST
(
AssertionTest
,
ASSERT_NO_THROW
)
{
ASSERT_NO_THROW
(
1
);
ASSERT_NO_THROW
(
ThrowNothing
()
);
EXPECT_FATAL_FAILURE
(
ASSERT_NO_THROW
(
ThrowAnInteger
()),
"Expected: ThrowAnInteger() doesn't throw an exception."
\
"Expected: ThrowAnInteger() doesn't throw an exception."
"
\n
Actual: it throws."
);
}
// Tests ASSERT_ANY_THROW.
TEST
(
AssertionTest
,
ASSERT_ANY_THROW
)
{
ASSERT_ANY_THROW
(
ThrowAnInteger
());
EXPECT_FATAL_FAILURE
(
ASSERT_ANY_THROW
(
1
),
"Expected: 1 throws an exception.
\n
Actual: it "
\
"doesn't."
);
EXPECT_FATAL_FAILURE
(
ASSERT_ANY_THROW
(
ThrowNothing
()),
"Expected: ThrowNothing() throws an exception.
\n
"
" Actual: it doesn't."
);
}
#endif // GTEST_HAS_EXCEPTIONS
...
...
@@ -3149,7 +3155,7 @@ TEST(ExpectThrowTest, DoesNotGenerateUnreachableCodeWarning) {
TEST
(
AssertionSyntaxTest
,
ExceptionAssertionsBehavesLikeSingleStatement
)
{
if
(
false
)
EXPECT_THROW
(
1
,
bool
);
EXPECT_THROW
(
ThrowNothing
()
,
bool
);
if
(
true
)
EXPECT_THROW
(
ThrowAnInteger
(),
int
);
...
...
@@ -3160,12 +3166,12 @@ TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) {
EXPECT_NO_THROW
(
ThrowAnInteger
());
if
(
true
)
EXPECT_NO_THROW
(
1
);
EXPECT_NO_THROW
(
ThrowNothing
()
);
else
;
if
(
false
)
EXPECT_ANY_THROW
(
1
);
EXPECT_ANY_THROW
(
ThrowNothing
()
);
if
(
true
)
EXPECT_ANY_THROW
(
ThrowAnInteger
());
...
...
@@ -3424,27 +3430,29 @@ TEST(ExpectTest, EXPECT_GT) {
TEST
(
ExpectTest
,
EXPECT_THROW
)
{
EXPECT_THROW
(
ThrowAnInteger
(),
int
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_THROW
(
ThrowAnInteger
(),
bool
),
"Expected: ThrowAnInteger() throws an exception of "
\
"Expected: ThrowAnInteger() throws an exception of "
"type bool.
\n
Actual: it throws a different type."
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_THROW
(
1
,
bool
),
"Expected: 1 throws an exception of type bool.
\n
"
\
" Actual: it throws nothing."
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_THROW
(
ThrowNothing
(),
bool
),
"Expected: ThrowNothing() throws an exception of type bool.
\n
"
" Actual: it throws nothing."
);
}
// Tests EXPECT_NO_THROW.
TEST
(
ExpectTest
,
EXPECT_NO_THROW
)
{
EXPECT_NO_THROW
(
1
);
EXPECT_NO_THROW
(
ThrowNothing
()
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_NO_THROW
(
ThrowAnInteger
()),
"Expected: ThrowAnInteger() doesn't throw an "
\
"Expected: ThrowAnInteger() doesn't throw an "
"exception.
\n
Actual: it throws."
);
}
// Tests EXPECT_ANY_THROW.
TEST
(
ExpectTest
,
EXPECT_ANY_THROW
)
{
EXPECT_ANY_THROW
(
ThrowAnInteger
());
EXPECT_NONFATAL_FAILURE
(
EXPECT_ANY_THROW
(
1
),
"Expected: 1 throws an exception.
\n
Actual: it "
\
"doesn't."
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_ANY_THROW
(
ThrowNothing
()),
"Expected: ThrowNothing() throws an exception.
\n
"
" Actual: it doesn't."
);
}
#endif // GTEST_HAS_EXCEPTIONS
...
...
@@ -5056,8 +5064,8 @@ TEST(StreamingAssertionsTest, Throw) {
}
TEST
(
StreamingAssertionsTest
,
NoThrow
)
{
EXPECT_NO_THROW
(
1
)
<<
"unexpected failure"
;
ASSERT_NO_THROW
(
1
)
<<
"unexpected failure"
;
EXPECT_NO_THROW
(
ThrowNothing
()
)
<<
"unexpected failure"
;
ASSERT_NO_THROW
(
ThrowNothing
()
)
<<
"unexpected failure"
;
EXPECT_NONFATAL_FAILURE
(
EXPECT_NO_THROW
(
ThrowAnInteger
())
<<
"expected failure"
,
"expected failure"
);
EXPECT_FATAL_FAILURE
(
ASSERT_NO_THROW
(
ThrowAnInteger
())
<<
...
...
@@ -5067,9 +5075,9 @@ TEST(StreamingAssertionsTest, NoThrow) {
TEST
(
StreamingAssertionsTest
,
AnyThrow
)
{
EXPECT_ANY_THROW
(
ThrowAnInteger
())
<<
"unexpected failure"
;
ASSERT_ANY_THROW
(
ThrowAnInteger
())
<<
"unexpected failure"
;
EXPECT_NONFATAL_FAILURE
(
EXPECT_ANY_THROW
(
1
)
<<
EXPECT_NONFATAL_FAILURE
(
EXPECT_ANY_THROW
(
ThrowNothing
()
)
<<
"expected failure"
,
"expected failure"
);
EXPECT_FATAL_FAILURE
(
ASSERT_ANY_THROW
(
1
)
<<
EXPECT_FATAL_FAILURE
(
ASSERT_ANY_THROW
(
ThrowNothing
()
)
<<
"expected failure"
,
"expected failure"
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment