199451b44SJordan Rupprecht"""
299451b44SJordan RupprechtTest completion in our IOHandlers.
399451b44SJordan Rupprecht"""
499451b44SJordan Rupprecht
599451b44SJordan Rupprechtimport os
699451b44SJordan Rupprecht
799451b44SJordan Rupprechtimport lldb
899451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
999451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
1099451b44SJordan Rupprechtfrom lldbsuite.test.lldbpexpect import PExpectTest
1199451b44SJordan Rupprecht
1299451b44SJordan Rupprecht
1399451b44SJordan Rupprechtclass BreakpointCallbackCommandSource(PExpectTest):
1499451b44SJordan Rupprecht    file_to_source = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'source.lldb')
1599451b44SJordan Rupprecht
1699451b44SJordan Rupprecht    # PExpect uses many timeouts internally and doesn't play well
1799451b44SJordan Rupprecht    # under ASAN on a loaded machine..
1899451b44SJordan Rupprecht    @skipIfAsan
1999451b44SJordan Rupprecht    @skipIfEditlineSupportMissing
20*f2128abeSMuhammad Omair Javaid    @skipIf(oslist=["linux"], archs=["arm", "aarch64"])
21266c90feSMichał Górny    @skipIf(oslist=["freebsd"], bugnumber="llvm.org/pr48316")
2299451b44SJordan Rupprecht    def test_breakpoint_callback_command_source(self):
2399451b44SJordan Rupprecht        self.build()
2499451b44SJordan Rupprecht        exe = self.getBuildArtifact("a.out")
2599451b44SJordan Rupprecht
2699451b44SJordan Rupprecht        self.launch(exe)
2799451b44SJordan Rupprecht        self.expect("b main", substrs=["Breakpoint 1"])
2899451b44SJordan Rupprecht        self.child.send("breakpoint command add -s python\n")
2999451b44SJordan Rupprecht        self.child.send(
3099451b44SJordan Rupprecht            "frame.GetThread().GetProcess().GetTarget().GetDebugger().HandleCommand('command source -s true {}')\n"
3199451b44SJordan Rupprecht            .format(self.file_to_source))
3299451b44SJordan Rupprecht        self.child.send("DONE\n")
3399451b44SJordan Rupprecht        self.expect_prompt()
3499451b44SJordan Rupprecht        self.expect("run", substrs=["Process", "stopped"])
3599451b44SJordan Rupprecht        self.expect("script print(foo)", substrs=["95126"])
36