1*6777b538SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/debug/debugger.h" 6*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_WIN) 9*6777b538SAndroid Build Coastguard Worker #include <windows.h> 10*6777b538SAndroid Build Coastguard Worker #endif 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h" 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker namespace { 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker #if defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID) CrashWithBreakDebugger()17*6777b538SAndroid Build Coastguard Workervoid CrashWithBreakDebugger() { 18*6777b538SAndroid Build Coastguard Worker base::debug::SetSuppressDebugUI(false); 19*6777b538SAndroid Build Coastguard Worker base::debug::BreakDebugger(); 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_WIN) 22*6777b538SAndroid Build Coastguard Worker // This should not be executed. 23*6777b538SAndroid Build Coastguard Worker _exit(125); 24*6777b538SAndroid Build Coastguard Worker #endif 25*6777b538SAndroid Build Coastguard Worker } 26*6777b538SAndroid Build Coastguard Worker #endif // defined(GTEST_HAS_DEATH_TEST) 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker } // namespace 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker // Death tests misbehave on Android. 31*6777b538SAndroid Build Coastguard Worker #if defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID) 32*6777b538SAndroid Build Coastguard Worker TEST(Debugger,CrashAtBreakpoint)33*6777b538SAndroid Build Coastguard WorkerTEST(Debugger, CrashAtBreakpoint) { 34*6777b538SAndroid Build Coastguard Worker EXPECT_DEATH(CrashWithBreakDebugger(), ""); 35*6777b538SAndroid Build Coastguard Worker } 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_WIN) TEST(Debugger,DoesntExecuteBeyondBreakpoint)38*6777b538SAndroid Build Coastguard WorkerTEST(Debugger, DoesntExecuteBeyondBreakpoint) { 39*6777b538SAndroid Build Coastguard Worker EXPECT_EXIT(CrashWithBreakDebugger(), 40*6777b538SAndroid Build Coastguard Worker ::testing::ExitedWithCode(STATUS_BREAKPOINT), ""); 41*6777b538SAndroid Build Coastguard Worker } 42*6777b538SAndroid Build Coastguard Worker #endif // BUILDFLAG(IS_WIN) 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Worker #else // defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID) TEST(Debugger,NoTest)45*6777b538SAndroid Build Coastguard WorkerTEST(Debugger, NoTest) { 46*6777b538SAndroid Build Coastguard Worker } 47*6777b538SAndroid Build Coastguard Worker #endif // defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID) 48