1*99451b44SJordan Rupprecht"""Test the RunCommandInterpreter API.""" 2*99451b44SJordan Rupprecht 3*99451b44SJordan Rupprechtimport os 4*99451b44SJordan Rupprechtimport lldb 5*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 6*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 7*99451b44SJordan Rupprecht 8*99451b44SJordan Rupprechtclass CommandRunInterpreterLegacyAPICase(TestBase): 9*99451b44SJordan Rupprecht 10*99451b44SJordan Rupprecht NO_DEBUG_INFO_TESTCASE = True 11*99451b44SJordan Rupprecht mydir = TestBase.compute_mydir(__file__) 12*99451b44SJordan Rupprecht 13*99451b44SJordan Rupprecht def setUp(self): 14*99451b44SJordan Rupprecht TestBase.setUp(self) 15*99451b44SJordan Rupprecht 16*99451b44SJordan Rupprecht self.stdin_path = self.getBuildArtifact("stdin.txt") 17*99451b44SJordan Rupprecht 18*99451b44SJordan Rupprecht with open(self.stdin_path, 'w') as input_handle: 19*99451b44SJordan Rupprecht input_handle.write("nonexistingcommand\nquit") 20*99451b44SJordan Rupprecht 21*99451b44SJordan Rupprecht # Python will close the file descriptor if all references 22*99451b44SJordan Rupprecht # to the filehandle object lapse, so we need to keep one 23*99451b44SJordan Rupprecht # around. 24*99451b44SJordan Rupprecht self.filehandle = open(self.stdin_path, 'r') 25*99451b44SJordan Rupprecht self.dbg.SetInputFileHandle(self.filehandle, False) 26*99451b44SJordan Rupprecht 27*99451b44SJordan Rupprecht # No need to track the output 28*99451b44SJordan Rupprecht self.devnull = open(os.devnull, 'w') 29*99451b44SJordan Rupprecht self.dbg.SetOutputFileHandle(self.devnull, False) 30*99451b44SJordan Rupprecht self.dbg.SetErrorFileHandle (self.devnull, False) 31*99451b44SJordan Rupprecht 32*99451b44SJordan Rupprecht @add_test_categories(['pyapi']) 33*99451b44SJordan Rupprecht def test_run_session_with_error_and_quit_legacy(self): 34*99451b44SJordan Rupprecht """Run non-existing and quit command returns appropriate values""" 35*99451b44SJordan Rupprecht 36*99451b44SJordan Rupprecht n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter( 37*99451b44SJordan Rupprecht True, False, lldb.SBCommandInterpreterRunOptions(), 0, False, 38*99451b44SJordan Rupprecht False) 39*99451b44SJordan Rupprecht 40*99451b44SJordan Rupprecht self.assertGreater(n_errors, 0) 41*99451b44SJordan Rupprecht self.assertTrue(quit_requested) 42*99451b44SJordan Rupprecht self.assertFalse(has_crashed) 43*99451b44SJordan Rupprecht 44*99451b44SJordan Rupprecht 45*99451b44SJordan Rupprechtclass CommandRunInterpreterAPICase(TestBase): 46*99451b44SJordan Rupprecht 47*99451b44SJordan Rupprecht NO_DEBUG_INFO_TESTCASE = True 48*99451b44SJordan Rupprecht mydir = TestBase.compute_mydir(__file__) 49*99451b44SJordan Rupprecht 50*99451b44SJordan Rupprecht def setUp(self): 51*99451b44SJordan Rupprecht TestBase.setUp(self) 52*99451b44SJordan Rupprecht 53*99451b44SJordan Rupprecht self.stdin_path = self.getBuildArtifact("stdin.txt") 54*99451b44SJordan Rupprecht 55*99451b44SJordan Rupprecht with open(self.stdin_path, 'w') as input_handle: 56*99451b44SJordan Rupprecht input_handle.write("nonexistingcommand\nquit") 57*99451b44SJordan Rupprecht 58*99451b44SJordan Rupprecht self.dbg.SetInputFile(open(self.stdin_path, 'r')) 59*99451b44SJordan Rupprecht 60*99451b44SJordan Rupprecht # No need to track the output 61*99451b44SJordan Rupprecht devnull = open(os.devnull, 'w') 62*99451b44SJordan Rupprecht self.dbg.SetOutputFile(devnull) 63*99451b44SJordan Rupprecht self.dbg.SetErrorFile(devnull) 64*99451b44SJordan Rupprecht 65*99451b44SJordan Rupprecht @add_test_categories(['pyapi']) 66*99451b44SJordan Rupprecht def test_run_session_with_error_and_quit(self): 67*99451b44SJordan Rupprecht """Run non-existing and quit command returns appropriate values""" 68*99451b44SJordan Rupprecht 69*99451b44SJordan Rupprecht n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter( 70*99451b44SJordan Rupprecht True, False, lldb.SBCommandInterpreterRunOptions(), 0, False, 71*99451b44SJordan Rupprecht False) 72*99451b44SJordan Rupprecht 73*99451b44SJordan Rupprecht self.assertGreater(n_errors, 0) 74*99451b44SJordan Rupprecht self.assertTrue(quit_requested) 75*99451b44SJordan Rupprecht self.assertFalse(has_crashed) 76