""" Test Debugger APIs. """ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class DebuggerAPITestCase(TestBase): mydir = TestBase.compute_mydir(__file__) NO_DEBUG_INFO_TESTCASE = True @add_test_categories(['pyapi']) def test_debugger_api_boundary_condition(self): """Exercise SBDebugger APIs with boundary conditions.""" self.dbg.HandleCommand(None) self.dbg.SetDefaultArchitecture(None) self.dbg.GetScriptingLanguage(None) self.dbg.CreateTarget(None) self.dbg.CreateTarget(None, None, None, True, lldb.SBError()) self.dbg.CreateTargetWithFileAndTargetTriple(None, None) self.dbg.CreateTargetWithFileAndArch(None, None) self.dbg.FindTargetWithFileAndArch(None, None) self.dbg.SetInternalVariable(None, None, None) self.dbg.GetInternalVariableValue(None, None) # FIXME (filcab): We must first allow for the swig bindings to know if # a Python callback is set. (Check python-typemaps.swig) # self.dbg.SetLoggingCallback(None) self.dbg.SetPrompt(None) self.dbg.SetCurrentPlatform(None) self.dbg.SetCurrentPlatformSDKRoot(None) fresh_dbg = lldb.SBDebugger() self.assertEquals(len(fresh_dbg), 0) @add_test_categories(['pyapi']) def test_debugger_delete_invalid_target(self): """SBDebugger.DeleteTarget() should not crash LLDB given and invalid target.""" target = lldb.SBTarget() self.assertFalse(target.IsValid()) self.dbg.DeleteTarget(target) @add_test_categories(['pyapi']) def test_debugger_internal_variables(self): debugger_name = self.dbg.GetInstanceName() # Set a variable and check it was written successfully. error = lldb.SBDebugger.SetInternalVariable( 'target.prefer-dynamic-value', 'no-dynamic-values', debugger_name) self.assertTrue(error.Success()) ret = lldb.SBDebugger.GetInternalVariableValue( 'target.prefer-dynamic-value', debugger_name) self.assertEqual(ret.GetSize(), 1) self.assertEqual(ret.GetStringAtIndex(0), 'no-dynamic-values') # Set a variable with a different value. error = lldb.SBDebugger.SetInternalVariable( 'target.prefer-dynamic-value', 'no-run-target', debugger_name) self.assertTrue(error.Success()) ret = lldb.SBDebugger.GetInternalVariableValue( 'target.prefer-dynamic-value', debugger_name) self.assertEqual(ret.GetSize(), 1) self.assertEqual(ret.GetStringAtIndex(0), 'no-run-target') # Try setting invalid value, check for error. error = lldb.SBDebugger.SetInternalVariable( 'target.prefer-dynamic-value', 'dummy-value', debugger_name) self.assertTrue(error.Fail()) # Check that the value didn't change. ret = lldb.SBDebugger.GetInternalVariableValue( 'target.prefer-dynamic-value', debugger_name) self.assertEqual(ret.GetSize(), 1) self.assertEqual(ret.GetStringAtIndex(0), 'no-run-target')