1*99451b44SJordan Rupprecht""" 2*99451b44SJordan RupprechtTest that commands do not try and hold on to stale CommandInterpreters in a multiple debuggers scenario 3*99451b44SJordan Rupprecht""" 4*99451b44SJordan Rupprecht 5*99451b44SJordan Rupprechtfrom __future__ import print_function 6*99451b44SJordan Rupprecht 7*99451b44SJordan Rupprecht 8*99451b44SJordan Rupprechtimport lldb 9*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 10*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 11*99451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 12*99451b44SJordan Rupprecht 13*99451b44SJordan Rupprecht 14*99451b44SJordan Rupprechtclass MultipleDebuggersCommandsTestCase(TestBase): 15*99451b44SJordan Rupprecht 16*99451b44SJordan Rupprecht @no_debug_info_test 17*99451b44SJordan Rupprecht def test_multipledebuggers_commands(self): 18*99451b44SJordan Rupprecht """Test that commands do not try and hold on to stale CommandInterpreters in a multiple debuggers scenario""" 19*99451b44SJordan Rupprecht source_init_files = False 20*99451b44SJordan Rupprecht magic_text = "The following commands may relate to 'env'" 21*99451b44SJordan Rupprecht 22*99451b44SJordan Rupprecht debugger_1 = lldb.SBDebugger.Create(source_init_files) 23*99451b44SJordan Rupprecht interpreter_1 = debugger_1.GetCommandInterpreter() 24*99451b44SJordan Rupprecht 25*99451b44SJordan Rupprecht retobj = lldb.SBCommandReturnObject() 26*99451b44SJordan Rupprecht interpreter_1.HandleCommand("apropos env", retobj) 27*99451b44SJordan Rupprecht self.assertTrue( 28*99451b44SJordan Rupprecht magic_text in str(retobj), 29*99451b44SJordan Rupprecht "[interpreter_1]: the output does not contain the correct words") 30*99451b44SJordan Rupprecht 31*99451b44SJordan Rupprecht if self.TraceOn(): 32*99451b44SJordan Rupprecht print(str(retobj)) 33*99451b44SJordan Rupprecht 34*99451b44SJordan Rupprecht lldb.SBDebugger.Destroy(debugger_1) 35*99451b44SJordan Rupprecht 36*99451b44SJordan Rupprecht # now do this again with a different debugger - we shouldn't crash 37*99451b44SJordan Rupprecht 38*99451b44SJordan Rupprecht debugger_2 = lldb.SBDebugger.Create(source_init_files) 39*99451b44SJordan Rupprecht interpreter_2 = debugger_2.GetCommandInterpreter() 40*99451b44SJordan Rupprecht 41*99451b44SJordan Rupprecht retobj = lldb.SBCommandReturnObject() 42*99451b44SJordan Rupprecht interpreter_2.HandleCommand("apropos env", retobj) 43*99451b44SJordan Rupprecht self.assertTrue( 44*99451b44SJordan Rupprecht magic_text in str(retobj), 45*99451b44SJordan Rupprecht "[interpreter_2]: the output does not contain the correct words") 46*99451b44SJordan Rupprecht 47*99451b44SJordan Rupprecht if self.TraceOn(): 48*99451b44SJordan Rupprecht print(str(retobj)) 49*99451b44SJordan Rupprecht 50*99451b44SJordan Rupprecht lldb.SBDebugger.Destroy(debugger_2) 51