50 lines · python
1# encoding: utf-82"""3Test lldb data formatter subsystem.4"""5 6 7import lldb8from lldbsuite.test.decorators import *9from lldbsuite.test.lldbtest import *10from lldbsuite.test import lldbutil11 12 13class ObjCDataFormatterTestCase(TestBase):14 def appkit_tester_impl(self, commands, use_constant_classes):15 if use_constant_classes:16 self.build()17 else:18 disable_constant_classes = {19 "CFLAGS_EXTRAS": "-fno-constant-nsnumber-literals "20 + "-fno-constant-nsarray-literals "21 + "-fno-constant-nsdictionary-literals",22 }23 # FIXME: Remove compiler when flags are available upstream.24 self.build(dictionary=disable_constant_classes, compiler="xcrun clang")25 self.appkit_common_data_formatters_command()26 commands()27 28 def appkit_common_data_formatters_command(self):29 """Test formatters for AppKit classes."""30 self.target, process, thread, bkpt = lldbutil.run_to_source_breakpoint(31 self, "// Set break point at this line.", lldb.SBFileSpec("main.m", False)32 )33 34 # The stop reason of the thread should be breakpoint.35 self.expect(36 "thread list",37 STOPPED_DUE_TO_BREAKPOINT,38 substrs=["stopped", "stop reason = breakpoint"],39 )40 41 # This is the function to remove the custom formats in order to have a42 # clean slate for the next test case.43 def cleanup():44 self.runCmd("type format clear", check=False)45 self.runCmd("type summary clear", check=False)46 self.runCmd("type synth clear", check=False)47 48 # Execute the cleanup function during test case tear down.49 self.addTearDownHook(cleanup)50