diff options
author | zhanyong.wan <zhanyong.wan@861a406c-534a-0410-8894-cb66d6ee9925> | 2009-05-05 23:13:43 +0000 |
---|---|---|
committer | zhanyong.wan <zhanyong.wan@861a406c-534a-0410-8894-cb66d6ee9925> | 2009-05-05 23:13:43 +0000 |
commit | 42abea350d4f26a006f760fae0d1f9882deb9221 (patch) | |
tree | 7b897744aa871de2cda218509fe8d16bf11991ba | |
parent | 9b23e3cc7677643f6adaf6c327275d0a7cdff02c (diff) | |
download | googletest-42abea350d4f26a006f760fae0d1f9882deb9221.tar.gz googletest-42abea350d4f26a006f760fae0d1f9882deb9221.tar.bz2 googletest-42abea350d4f26a006f760fae0d1f9882deb9221.zip |
Uses DebugBreak() to properly break on Windows (by Vlad Losev).
-rw-r--r-- | src/gtest.cc | 7 | ||||
-rwxr-xr-x | test/gtest_break_on_failure_unittest.py | 16 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/gtest.cc b/src/gtest.cc index 48807671..6fc4044d 100644 --- a/src/gtest.cc +++ b/src/gtest.cc @@ -3312,7 +3312,14 @@ void UnitTest::AddTestPartResult(TestPartResultType result_type, // with another testing framework) and specify the former on the // command line for debugging. if (GTEST_FLAG(break_on_failure)) { +#if GTEST_OS_WINDOWS + // Using DebugBreak on Windows allows gtest to still break into a debugger + // when a failure happens and both the --gtest_break_on_failure and + // the --gtest_catch_exceptions flags are specified. + DebugBreak(); +#else *static_cast<int*>(NULL) = 1; +#endif // GTEST_OS_WINDOWS } else if (GTEST_FLAG(throw_on_failure)) { #if GTEST_HAS_EXCEPTIONS throw GoogleTestFailureException(result); diff --git a/test/gtest_break_on_failure_unittest.py b/test/gtest_break_on_failure_unittest.py index c9dd0081..c312ce22 100755 --- a/test/gtest_break_on_failure_unittest.py +++ b/test/gtest_break_on_failure_unittest.py @@ -57,6 +57,9 @@ BREAK_ON_FAILURE_FLAG = 'gtest_break_on_failure' # The environment variable for enabling/disabling the throw-on-failure mode. THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE' +# The environment variable for enabling/disabling the catch-exceptions mode. +CATCH_EXCEPTIONS_ENV_VAR = 'GTEST_CATCH_EXCEPTIONS' + # Path to the gtest_break_on_failure_unittest_ program. EXE_PATH = gtest_test_utils.GetTestExecutablePath( 'gtest_break_on_failure_unittest_') @@ -194,5 +197,18 @@ class GTestBreakOnFailureUnitTest(unittest.TestCase): finally: SetEnvVar(THROW_ON_FAILURE_ENV_VAR, None) + if IS_WINDOWS: + def testCatchExceptionsDoesNotInterfere(self): + """Tests that gtest_catch_exceptions doesn't interfere.""" + + SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, '1') + try: + self.RunAndVerify(env_var_value='1', + flag_value='1', + expect_seg_fault=1) + finally: + SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, None) + + if __name__ == '__main__': gtest_test_utils.Main() |