| // Copyright 2014 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "base/debug/debugger.h" | |
| #include "build/build_config.h" | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| namespace { | |
| #if defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID) | |
| void CrashWithBreakDebugger() { | |
| base::debug::SetSuppressDebugUI(false); | |
| base::debug::BreakDebugger(); | |
| #if defined(OS_WIN) | |
| // This should not be executed. | |
| _exit(125); | |
| #endif | |
| } | |
| #endif // defined(GTEST_HAS_DEATH_TEST) | |
| } // namespace | |
| // Death tests misbehave on Android. | |
| #if defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID) | |
| TEST(Debugger, CrashAtBreakpoint) { | |
| EXPECT_DEATH(CrashWithBreakDebugger(), ""); | |
| } | |
| #if defined(OS_WIN) | |
| TEST(Debugger, DoesntExecuteBeyondBreakpoint) { | |
| EXPECT_EXIT(CrashWithBreakDebugger(), | |
| ::testing::ExitedWithCode(0x80000003), ""); | |
| } | |
| #endif // defined(OS_WIN) | |
| #else // defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID) | |
| TEST(Debugger, NoTest) { | |
| } | |
| #endif // defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID) |