Uses DebugBreak() to properly break on Windows (by Vlad Losev).
This commit is contained in:
parent
9b23e3cc76
commit
42abea350d
|
@ -3312,7 +3312,14 @@ void UnitTest::AddTestPartResult(TestPartResultType result_type,
|
||||||
// with another testing framework) and specify the former on the
|
// with another testing framework) and specify the former on the
|
||||||
// command line for debugging.
|
// command line for debugging.
|
||||||
if (GTEST_FLAG(break_on_failure)) {
|
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;
|
*static_cast<int*>(NULL) = 1;
|
||||||
|
#endif // GTEST_OS_WINDOWS
|
||||||
} else if (GTEST_FLAG(throw_on_failure)) {
|
} else if (GTEST_FLAG(throw_on_failure)) {
|
||||||
#if GTEST_HAS_EXCEPTIONS
|
#if GTEST_HAS_EXCEPTIONS
|
||||||
throw GoogleTestFailureException(result);
|
throw GoogleTestFailureException(result);
|
||||||
|
|
|
@ -57,6 +57,9 @@ BREAK_ON_FAILURE_FLAG = 'gtest_break_on_failure'
|
||||||
# The environment variable for enabling/disabling the throw-on-failure mode.
|
# The environment variable for enabling/disabling the throw-on-failure mode.
|
||||||
THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE'
|
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.
|
# Path to the gtest_break_on_failure_unittest_ program.
|
||||||
EXE_PATH = gtest_test_utils.GetTestExecutablePath(
|
EXE_PATH = gtest_test_utils.GetTestExecutablePath(
|
||||||
'gtest_break_on_failure_unittest_')
|
'gtest_break_on_failure_unittest_')
|
||||||
|
@ -194,5 +197,18 @@ class GTestBreakOnFailureUnitTest(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
SetEnvVar(THROW_ON_FAILURE_ENV_VAR, None)
|
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__':
|
if __name__ == '__main__':
|
||||||
gtest_test_utils.Main()
|
gtest_test_utils.Main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user