| """ | |
| Test completion in our IOHandlers. | |
| """ | |
| import os | |
| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test.lldbpexpect import PExpectTest | |
| class BreakpointCallbackCommandSource(PExpectTest): | |
| file_to_source = os.path.join( | |
| os.path.abspath(os.path.dirname(__file__)), "source.lldb" | |
| ) | |
| # PExpect uses many timeouts internally and doesn't play well | |
| # under ASAN on a loaded machine.. | |
| @skipIfAsan | |
| @skipIfEditlineSupportMissing | |
| @skipIf(oslist=["linux"], archs=["arm$", "aarch64"]) | |
| @skipIf(oslist=["freebsd"], bugnumber="llvm.org/pr48316") | |
| def test_breakpoint_callback_command_source(self): | |
| self.build() | |
| exe = self.getBuildArtifact("a.out") | |
| self.launch(exe) | |
| self.expect("b main", substrs=["Breakpoint 1"]) | |
| self.child.send("breakpoint command add -s python\n") | |
| self.child.send( | |
| "frame.GetThread().GetProcess().GetTarget().GetDebugger().HandleCommand('command source -s true {}')\n".format( | |
| self.file_to_source | |
| ) | |
| ) | |
| self.child.send("DONE\n") | |
| self.expect_prompt() | |
| self.expect("run", substrs=["Process", "stopped"]) | |
| self.expect("script print(foo)", substrs=["95126"]) |