Index: packages/Python/lldbsuite/test/python_api/interpreter/TestRunCommandInterpreterAPI.py =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/python_api/interpreter/TestRunCommandInterpreterAPI.py @@ -0,0 +1,38 @@ +"""Test the RunCommandInterpreter API.""" + +import os +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class CommandRunInterpreterAPICase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + + self.stdin_path = self.getBuildArtifact("stdin.txt") + + with open(self.stdin_path, 'w') as input_handle: + input_handle.write("nonexistingcommand\nquit") + + with open(self.stdin_path, 'r') as input_handle: + self.dbg.SetInputFileHandle(input_handle, False) + + # No need to track the output + devnull = open(os.devnull, 'w') + self.dbg.SetOutputFileHandle(devnull, False) + self.dbg.SetErrorFileHandle(devnull, False) + + @add_test_categories(['pyapi']) + def test_run_session_with_error_and_quit(self): + """Run non-existing and quit command returns appropriate values""" + + n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter( + True, False, lldb.SBCommandInterpreterRunOptions(), 0, False, + False) + + self.assertGreater(n_errors, 0) + self.assertTrue(quit_requested) + self.assertFalse(has_crashed) Index: scripts/interface/SBDebugger.i =================================================================== --- scripts/interface/SBDebugger.i +++ scripts/interface/SBDebugger.i @@ -423,6 +423,9 @@ lldb::SBTypeSynthetic GetSyntheticForType (lldb::SBTypeNameSpecifier); + %apply int& INOUT { int& num_errors }; + %apply bool& INOUT { bool& quit_requested }; + %apply bool& INOUT { bool& stopped_for_crash }; void RunCommandInterpreter (bool auto_handle_events, bool spawn_thread,