| """ |
| 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"]) |