import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class TestCase(TestBase): @skipUnlessDarwin # LLDB ends up calling the user-defined function (but at least doesn't # crash). @skipIf(macos_version=["<", "13.0"]) def test(self): """ Tests LLDB's behaviour if the user defines their own conflicting objc_copyRealizedClassList_nolock function. """ self.build() lldbutil.run_to_source_breakpoint( self, "// break here", lldb.SBFileSpec("main.m") ) # Get the (dynamic) type of our 'id' variable so that our Objective-C # runtime information is updated. str_val = self.expect_expr("custom_class") dyn_val = str_val.GetDynamicValue(lldb.eDynamicCanRunTarget) # We should have retrieved the proper class list even in presence of # the user-defined function. self.assertEqual(dyn_val.GetTypeName(), "CustomClass *")