199451b44SJordan Rupprecht"""Test the RunCommandInterpreter API.""" 299451b44SJordan Rupprecht 399451b44SJordan Rupprechtimport os 499451b44SJordan Rupprechtimport lldb 599451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 699451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 799451b44SJordan Rupprecht 899451b44SJordan Rupprechtclass CommandRunInterpreterLegacyAPICase(TestBase): 999451b44SJordan Rupprecht 1099451b44SJordan Rupprecht NO_DEBUG_INFO_TESTCASE = True 1199451b44SJordan Rupprecht 1299451b44SJordan Rupprecht def setUp(self): 1399451b44SJordan Rupprecht TestBase.setUp(self) 1499451b44SJordan Rupprecht 1599451b44SJordan Rupprecht self.stdin_path = self.getBuildArtifact("stdin.txt") 1699451b44SJordan Rupprecht 1799451b44SJordan Rupprecht with open(self.stdin_path, 'w') as input_handle: 1899451b44SJordan Rupprecht input_handle.write("nonexistingcommand\nquit") 1999451b44SJordan Rupprecht 2099451b44SJordan Rupprecht # Python will close the file descriptor if all references 2199451b44SJordan Rupprecht # to the filehandle object lapse, so we need to keep one 2299451b44SJordan Rupprecht # around. 2399451b44SJordan Rupprecht self.filehandle = open(self.stdin_path, 'r') 2499451b44SJordan Rupprecht self.dbg.SetInputFileHandle(self.filehandle, False) 2599451b44SJordan Rupprecht 2699451b44SJordan Rupprecht # No need to track the output 2799451b44SJordan Rupprecht self.devnull = open(os.devnull, 'w') 2899451b44SJordan Rupprecht self.dbg.SetOutputFileHandle(self.devnull, False) 2999451b44SJordan Rupprecht self.dbg.SetErrorFileHandle (self.devnull, False) 3099451b44SJordan Rupprecht 3199451b44SJordan Rupprecht def test_run_session_with_error_and_quit_legacy(self): 3299451b44SJordan Rupprecht """Run non-existing and quit command returns appropriate values""" 3399451b44SJordan Rupprecht 3499451b44SJordan Rupprecht n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter( 3599451b44SJordan Rupprecht True, False, lldb.SBCommandInterpreterRunOptions(), 0, False, 3699451b44SJordan Rupprecht False) 3799451b44SJordan Rupprecht 3899451b44SJordan Rupprecht self.assertGreater(n_errors, 0) 3999451b44SJordan Rupprecht self.assertTrue(quit_requested) 4099451b44SJordan Rupprecht self.assertFalse(has_crashed) 4199451b44SJordan Rupprecht 4299451b44SJordan Rupprecht 4399451b44SJordan Rupprechtclass CommandRunInterpreterAPICase(TestBase): 4499451b44SJordan Rupprecht 4599451b44SJordan Rupprecht NO_DEBUG_INFO_TESTCASE = True 4699451b44SJordan Rupprecht 4799451b44SJordan Rupprecht def setUp(self): 4899451b44SJordan Rupprecht TestBase.setUp(self) 4999451b44SJordan Rupprecht 5099451b44SJordan Rupprecht self.stdin_path = self.getBuildArtifact("stdin.txt") 5199451b44SJordan Rupprecht 5299451b44SJordan Rupprecht with open(self.stdin_path, 'w') as input_handle: 5399451b44SJordan Rupprecht input_handle.write("nonexistingcommand\nquit") 5499451b44SJordan Rupprecht 5599451b44SJordan Rupprecht self.dbg.SetInputFile(open(self.stdin_path, 'r')) 5699451b44SJordan Rupprecht 5799451b44SJordan Rupprecht # No need to track the output 5899451b44SJordan Rupprecht devnull = open(os.devnull, 'w') 5999451b44SJordan Rupprecht self.dbg.SetOutputFile(devnull) 6099451b44SJordan Rupprecht self.dbg.SetErrorFile(devnull) 6199451b44SJordan Rupprecht 6299451b44SJordan Rupprecht def test_run_session_with_error_and_quit(self): 6399451b44SJordan Rupprecht """Run non-existing and quit command returns appropriate values""" 6499451b44SJordan Rupprecht 6599451b44SJordan Rupprecht n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter( 6699451b44SJordan Rupprecht True, False, lldb.SBCommandInterpreterRunOptions(), 0, False, 6799451b44SJordan Rupprecht False) 6899451b44SJordan Rupprecht 6999451b44SJordan Rupprecht self.assertGreater(n_errors, 0) 7099451b44SJordan Rupprecht self.assertTrue(quit_requested) 7199451b44SJordan Rupprecht self.assertFalse(has_crashed) 72*c9647419SMed Ismail Bennani 73*c9647419SMed Ismail Bennaniclass SBCommandInterpreterRunOptionsCase(TestBase): 74*c9647419SMed Ismail Bennani 75*c9647419SMed Ismail Bennani NO_DEBUG_INFO_TESTCASE = True 76*c9647419SMed Ismail Bennani 77*c9647419SMed Ismail Bennani def test_command_interpreter_run_options(self): 78*c9647419SMed Ismail Bennani """Test SBCommandInterpreterRunOptions default values, getters & setters """ 79*c9647419SMed Ismail Bennani 80*c9647419SMed Ismail Bennani opts = lldb.SBCommandInterpreterRunOptions() 81*c9647419SMed Ismail Bennani 82*c9647419SMed Ismail Bennani # Check getters with default values 83*c9647419SMed Ismail Bennani self.assertEqual(opts.GetStopOnContinue(), False) 84*c9647419SMed Ismail Bennani self.assertEqual(opts.GetStopOnError(), False) 85*c9647419SMed Ismail Bennani self.assertEqual(opts.GetStopOnCrash(), False) 86*c9647419SMed Ismail Bennani self.assertEqual(opts.GetEchoCommands(), True) 87*c9647419SMed Ismail Bennani self.assertEqual(opts.GetPrintResults(), True) 88*c9647419SMed Ismail Bennani self.assertEqual(opts.GetPrintErrors(), True) 89*c9647419SMed Ismail Bennani self.assertEqual(opts.GetAddToHistory(), True) 90*c9647419SMed Ismail Bennani 91*c9647419SMed Ismail Bennani # Invert values 92*c9647419SMed Ismail Bennani opts.SetStopOnContinue(not opts.GetStopOnContinue()) 93*c9647419SMed Ismail Bennani opts.SetStopOnError(not opts.GetStopOnError()) 94*c9647419SMed Ismail Bennani opts.SetStopOnCrash(not opts.GetStopOnCrash()) 95*c9647419SMed Ismail Bennani opts.SetEchoCommands(not opts.GetEchoCommands()) 96*c9647419SMed Ismail Bennani opts.SetPrintResults(not opts.GetPrintResults()) 97*c9647419SMed Ismail Bennani opts.SetPrintErrors(not opts.GetPrintErrors()) 98*c9647419SMed Ismail Bennani opts.SetAddToHistory(not opts.GetAddToHistory()) 99*c9647419SMed Ismail Bennani 100*c9647419SMed Ismail Bennani # Check the value changed 101*c9647419SMed Ismail Bennani self.assertEqual(opts.GetStopOnContinue(), True) 102*c9647419SMed Ismail Bennani self.assertEqual(opts.GetStopOnError(), True) 103*c9647419SMed Ismail Bennani self.assertEqual(opts.GetStopOnCrash(), True) 104*c9647419SMed Ismail Bennani self.assertEqual(opts.GetEchoCommands(), False) 105*c9647419SMed Ismail Bennani self.assertEqual(opts.GetPrintResults(), False) 106*c9647419SMed Ismail Bennani self.assertEqual(opts.GetPrintErrors(), False) 107*c9647419SMed Ismail Bennani self.assertEqual(opts.GetAddToHistory(), False) 108