199451b44SJordan Rupprecht""" 299451b44SJordan RupprechtTest that commands do not try and hold on to stale CommandInterpreters in a multiple debuggers scenario 399451b44SJordan Rupprecht""" 499451b44SJordan Rupprecht 599451b44SJordan Rupprechtimport lldb 699451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 799451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 899451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 999451b44SJordan Rupprecht 1099451b44SJordan Rupprecht 1199451b44SJordan Rupprechtclass MultipleDebuggersCommandsTestCase(TestBase): 1299451b44SJordan Rupprecht @no_debug_info_test 1399451b44SJordan Rupprecht def test_multipledebuggers_commands(self): 1499451b44SJordan Rupprecht """Test that commands do not try and hold on to stale CommandInterpreters in a multiple debuggers scenario""" 1599451b44SJordan Rupprecht source_init_files = False 1699451b44SJordan Rupprecht magic_text = "The following commands may relate to 'env'" 1799451b44SJordan Rupprecht 1899451b44SJordan Rupprecht debugger_1 = lldb.SBDebugger.Create(source_init_files) 1999451b44SJordan Rupprecht interpreter_1 = debugger_1.GetCommandInterpreter() 2099451b44SJordan Rupprecht 2199451b44SJordan Rupprecht retobj = lldb.SBCommandReturnObject() 2299451b44SJordan Rupprecht interpreter_1.HandleCommand("apropos env", retobj) 23*9c246882SJordan Rupprecht self.assertIn( 24*9c246882SJordan Rupprecht magic_text, 25*9c246882SJordan Rupprecht str(retobj), 262238dcc3SJonas Devlieghere "[interpreter_1]: the output does not contain the correct words", 272238dcc3SJonas Devlieghere ) 2899451b44SJordan Rupprecht 2999451b44SJordan Rupprecht if self.TraceOn(): 3099451b44SJordan Rupprecht print(str(retobj)) 3199451b44SJordan Rupprecht 3299451b44SJordan Rupprecht lldb.SBDebugger.Destroy(debugger_1) 3399451b44SJordan Rupprecht 3499451b44SJordan Rupprecht # now do this again with a different debugger - we shouldn't crash 3599451b44SJordan Rupprecht 3699451b44SJordan Rupprecht debugger_2 = lldb.SBDebugger.Create(source_init_files) 3799451b44SJordan Rupprecht interpreter_2 = debugger_2.GetCommandInterpreter() 3899451b44SJordan Rupprecht 3999451b44SJordan Rupprecht retobj = lldb.SBCommandReturnObject() 4099451b44SJordan Rupprecht interpreter_2.HandleCommand("apropos env", retobj) 41*9c246882SJordan Rupprecht self.assertIn( 42*9c246882SJordan Rupprecht magic_text, 43*9c246882SJordan Rupprecht str(retobj), 442238dcc3SJonas Devlieghere "[interpreter_2]: the output does not contain the correct words", 452238dcc3SJonas Devlieghere ) 4699451b44SJordan Rupprecht 4799451b44SJordan Rupprecht if self.TraceOn(): 4899451b44SJordan Rupprecht print(str(retobj)) 4999451b44SJordan Rupprecht 5099451b44SJordan Rupprecht lldb.SBDebugger.Destroy(debugger_2) 51