Author: Hamza Hassanain Date: 2026-01-09T15:00:59-06:00 New Revision: 1117d2a35f03584f1dc42ded7de179b442c5f33b
URL: https://github.com/llvm/llvm-project/commit/1117d2a35f03584f1dc42ded7de179b442c5f33b DIFF: https://github.com/llvm/llvm-project/commit/1117d2a35f03584f1dc42ded7de179b442c5f33b.diff LOG: [LLDB] Swig python extensions tests for SBTargetExtention (#173473) Implements part of #168920 Added: lldb/test/API/python_api/sbtarget_extensions/Makefile lldb/test/API/python_api/sbtarget_extensions/TestSBTargetExtensions.py lldb/test/API/python_api/sbtarget_extensions/main.c Modified: Removed: ################################################################################ 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 0000000000000..10495940055b6 --- /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 0000000000000..74ef9c4c49dd3 --- /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 0000000000000..e3dcbd11e66d3 --- /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 +} _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
