Home | History | Annotate | Download | only in debug
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "base/debug/debugger.h"
      6 
      7 #include "build/build_config.h"
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 
     10 namespace {
     11 
     12 #if defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID)
     13 void CrashWithBreakDebugger() {
     14   base::debug::SetSuppressDebugUI(false);
     15   base::debug::BreakDebugger();
     16 
     17 #if defined(OS_WIN)
     18   // This should not be executed.
     19   _exit(125);
     20 #endif
     21 }
     22 #endif  // defined(GTEST_HAS_DEATH_TEST)
     23 
     24 }  // namespace
     25 
     26 // Death tests misbehave on Android.
     27 #if defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID)
     28 
     29 TEST(Debugger, CrashAtBreakpoint) {
     30   EXPECT_DEATH(CrashWithBreakDebugger(), "");
     31 }
     32 
     33 #if defined(OS_WIN)
     34 TEST(Debugger, DoesntExecuteBeyondBreakpoint) {
     35   EXPECT_EXIT(CrashWithBreakDebugger(),
     36               ::testing::ExitedWithCode(0x80000003), "");
     37 }
     38 #endif  // defined(OS_WIN)
     39 
     40 #else  // defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID)
     41 TEST(Debugger, NoTest) {
     42 }
     43 #endif  // defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID)
     44