199451b44SJordan Rupprecht""" 299451b44SJordan RupprechtTest lldb-vscode setBreakpoints request 399451b44SJordan Rupprecht""" 499451b44SJordan Rupprecht 599451b44SJordan Rupprecht 699451b44SJordan Rupprechtimport unittest2 799451b44SJordan Rupprechtimport vscode 899451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 999451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 1099451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 1199451b44SJordan Rupprechtimport lldbvscode_testcase 1299451b44SJordan Rupprecht 1399451b44SJordan Rupprecht 1499451b44SJordan Rupprechtclass TestVSCode_setExceptionBreakpoints( 1599451b44SJordan Rupprecht lldbvscode_testcase.VSCodeTestCaseBase): 1699451b44SJordan Rupprecht 1799451b44SJordan Rupprecht @skipIfWindows 1814fb3179SJonas Devlieghere @skipIfRemote 1999451b44SJordan Rupprecht def test_functionality(self): 2099451b44SJordan Rupprecht '''Tests setting and clearing exception breakpoints. 2199451b44SJordan Rupprecht This packet is a bit tricky on the debug adaptor side since there 2299451b44SJordan Rupprecht is no "clear exception breakpoints" packet. Exception breakpoints 2399451b44SJordan Rupprecht are set by sending a "setExceptionBreakpoints" packet with zero or 2499451b44SJordan Rupprecht more exception filters. If exception breakpoints have been set 25*e9264b74SKazuaki Ishizaki before, any existing breakpoints must remain set, and any new 2699451b44SJordan Rupprecht breakpoints must be created, and any breakpoints that were in 2799451b44SJordan Rupprecht previous requests and are not in the current request must be 2899451b44SJordan Rupprecht removed. This exception tests this setting and clearing and makes 2999451b44SJordan Rupprecht sure things happen correctly. It doesn't test hitting breakpoints 3099451b44SJordan Rupprecht and the functionality of each breakpoint, like 'conditions' and 3199451b44SJordan Rupprecht x'hitCondition' settings. 3299451b44SJordan Rupprecht ''' 3399451b44SJordan Rupprecht # Visual Studio Code Debug Adaptors have no way to specify the file 3499451b44SJordan Rupprecht # without launching or attaching to a process, so we must start a 3599451b44SJordan Rupprecht # process in order to be able to set breakpoints. 3699451b44SJordan Rupprecht program = self.getBuildArtifact("a.out") 3799451b44SJordan Rupprecht self.build_and_launch(program) 3899451b44SJordan Rupprecht 3999451b44SJordan Rupprecht filters = ['cpp_throw', 'cpp_catch'] 4099451b44SJordan Rupprecht response = self.vscode.request_setExceptionBreakpoints(filters) 4199451b44SJordan Rupprecht if response: 4299451b44SJordan Rupprecht self.assertTrue(response['success']) 4399451b44SJordan Rupprecht 4499451b44SJordan Rupprecht self.continue_to_exception_breakpoint('C++ Throw') 4599451b44SJordan Rupprecht self.continue_to_exception_breakpoint('C++ Catch') 46