summaryrefslogtreecommitdiff
path: root/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
diff options
context:
space:
mode:
authorAndy Yankovsky <werat@google.com>2021-02-01 12:25:53 +0100
committerRaphael Isemann <teemperor@gmail.com>2021-02-01 13:12:42 +0100
commit754ab803b8dc659e3645d369d1b5d6d2f97be29e (patch)
treeaca41a84dc1b33472c7d183e6e788f6ca36be78e /lldb/test/API/python_api/debugger/TestDebuggerAPI.py
parenteefa8a9ff859153c510e740b33a9e721e42b88c5 (diff)
[lldb] Use current execution context in SBDebugger
Use `GetSelectedExecutionContext()` instead of `GetCommandInterpreter().GetExecutionContext()` in `SBDebugger::GetInternalVariableValue/SBDebugger::SetInternalVariable`. The execution context in the command interpreter might be empty, if no commands has been executed yet (it is updated only when handling commands or completions -- e.g. https://github.com/llvm/llvm-project/blob/main/lldb/source/Interpreter/CommandInterpreter.cpp#L1855). Reviewed By: teemperor Differential Revision: https://reviews.llvm.org/D95761
Diffstat (limited to 'lldb/test/API/python_api/debugger/TestDebuggerAPI.py')
-rw-r--r--lldb/test/API/python_api/debugger/TestDebuggerAPI.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
index 32202acbe072..5d0311eb1b0c 100644
--- a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
+++ b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
@@ -43,3 +43,35 @@ class DebuggerAPITestCase(TestBase):
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')