aboutsummaryrefslogtreecommitdiff
path: root/lldb/test/API/python_api
diff options
context:
space:
mode:
authorHamza Hassanain <53662962+HamzaHassanain@users.noreply.github.com>2026-01-09 23:00:59 +0200
committerGitHub <noreply@github.com>2026-01-09 15:00:59 -0600
commit1117d2a35f03584f1dc42ded7de179b442c5f33b (patch)
tree364c3558de88f170bda1c83aaeeae34c293836b7 /lldb/test/API/python_api
parent42368f919463de02311f7d15191b330f6b8ac2f2 (diff)
downloadllvm-1117d2a35f03584f1dc42ded7de179b442c5f33b.zip
llvm-1117d2a35f03584f1dc42ded7de179b442c5f33b.tar.gz
llvm-1117d2a35f03584f1dc42ded7de179b442c5f33b.tar.bz2
[LLDB] Swig python extensions tests for SBTargetExtention (#173473)
Implements part of #168920
Diffstat (limited to 'lldb/test/API/python_api')
-rw-r--r--lldb/test/API/python_api/sbtarget_extensions/Makefile3
-rw-r--r--lldb/test/API/python_api/sbtarget_extensions/TestSBTargetExtensions.py138
-rw-r--r--lldb/test/API/python_api/sbtarget_extensions/main.c7
3 files changed, 148 insertions, 0 deletions
diff --git a/lldb/test/API/python_api/sbtarget_extensions/Makefile b/lldb/test/API/python_api/sbtarget_extensions/Makefile
new file mode 100644
index 0000000..1049594
--- /dev/null
+++ b/lldb/test/API/python_api/sbtarget_extensions/Makefile
@@ -0,0 +1,3 @@
+C_SOURCES := main.c
+
+include Makefile.rules
diff --git a/lldb/test/API/python_api/sbtarget_extensions/TestSBTargetExtensions.py b/lldb/test/API/python_api/sbtarget_extensions/TestSBTargetExtensions.py
new file mode 100644
index 0000000..74ef9c4
--- /dev/null
+++ b/lldb/test/API/python_api/sbtarget_extensions/TestSBTargetExtensions.py
@@ -0,0 +1,138 @@
+import re
+import uuid
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+
+
+class SBTargetExtensionsTestCase(TestBase):
+ def test_equality(self):
+ """Test the equality operator for SBTarget."""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target.IsValid())
+
+ self.assertEqual(target, target)
+ self.assertNotEqual(target, lldb.SBTarget())
+
+ def test_module_access(self):
+ """Test the module access extension properties and methods."""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target.IsValid())
+
+ self.assertTrue(len(target.modules) > 0)
+ module = target.module[0]
+ self.assertTrue(module.IsValid())
+
+ self.assertEqual(target.module["a.out"], module)
+ self.assertEqual(target.module[module.file.fullpath], module)
+
+ uuid_str = module.GetUUIDString()
+ if uuid_str:
+ try:
+ uuid_obj = uuid.UUID(uuid_str)
+ self.assertEqual(target.module[uuid_obj], module)
+ except ValueError:
+ pass
+
+ self.assertEqual(len(target.module[re.compile("a.out")]), 1)
+ self.assertEqual(target.module[re.compile("a.out")][0], module)
+
+ def test_process_creation(self):
+ """Test process creation via extensions."""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target.IsValid())
+
+ self.assertFalse(target.process.IsValid())
+
+ process = target.LaunchSimple(None, None, self.get_process_working_directory())
+ self.assertTrue(process.IsValid())
+
+ self.assertEqual(target.process.GetProcessID(), process.GetProcessID())
+
+ def test_breakpoints(self):
+ """Test breakpoint access via extensions."""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target.IsValid())
+
+ breakpoint = target.BreakpointCreateBySourceRegex(
+ "Set breakpoint here", lldb.SBFileSpec("main.c")
+ )
+ self.assertTrue(breakpoint.IsValid())
+
+ self.assertEqual(target.num_breakpoints, 1)
+ self.assertEqual(len(target.breakpoints), 1)
+
+ self.assertEqual(target.breakpoint[0].GetID(), target.breakpoints[0].GetID())
+
+ self.assertEqual(
+ target.FindBreakpointByID(breakpoint.GetID()).GetID(), breakpoint.GetID()
+ )
+
+ def test_watchpoints(self):
+ """Test watchpoint access via extensions."""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target.IsValid())
+
+ breakpoint = target.BreakpointCreateBySourceRegex(
+ "Set breakpoint here", lldb.SBFileSpec("main.c")
+ )
+ self.assertTrue(breakpoint.IsValid())
+
+ process = target.LaunchSimple(None, None, self.get_process_working_directory())
+ self.assertTrue(process.IsValid())
+
+ self.assertEqual(process.GetState(), lldb.eStateStopped)
+
+ variables = target.FindGlobalVariables("g_var", 1)
+ self.assertTrue(variables.GetSize() > 0)
+
+ global_variable = variables.GetValueAtIndex(0)
+ error = lldb.SBError()
+
+ watchpoint = target.WatchAddress(
+ global_variable.GetLoadAddress(), 4, False, True, error
+ )
+ self.assertTrue(error.Success(), f"Watchpoint failed: {error.GetCString()}")
+
+ self.assertTrue(target.num_watchpoints > 0)
+ self.assertEqual(len(target.watchpoints), target.num_watchpoints)
+
+ self.assertEqual(target.watchpoint[0].GetID(), target.watchpoints[0].GetID())
+ self.assertEqual(target.watchpoint[0].GetID(), watchpoint.GetID())
+
+ def test_other_properties(self):
+ """Test miscellaneous properties of SBTarget."""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target.IsValid())
+
+ self.assertTrue(target.executable.IsValid())
+
+ self.assertEqual(target.debugger.GetID(), self.dbg.GetID())
+
+ self.assertTrue(target.broadcaster.IsValid())
+ self.assertIn(
+ target.byte_order,
+ [lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid],
+ )
+ self.assertTrue(target.addr_size > 0)
+ self.assertIsNotNone(target.triple)
+ self.assertIsNotNone(target.arch_name)
+
+ self.assertTrue(target.data_byte_size > 0)
+ self.assertGreater(target.data_byte_size, 0)
+ self.assertGreater(target.code_byte_size, 0)
+
+ self.assertTrue(target.platform.IsValid())
diff --git a/lldb/test/API/python_api/sbtarget_extensions/main.c b/lldb/test/API/python_api/sbtarget_extensions/main.c
new file mode 100644
index 0000000..e3dcbd1
--- /dev/null
+++ b/lldb/test/API/python_api/sbtarget_extensions/main.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int g_var = 10;
+
+int main() {
+ return g_var; // Set breakpoint here
+}