brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · d5db44a Raw
121 lines · python
1"""2Test lldb data formatter subsystem.3"""4 5 6import lldb7from lldbsuite.test.lldbtest import *8import lldbsuite.test.lldbutil as lldbutil9 10 11class Radar9974002DataFormatterTestCase(TestBase):12    # test for rdar://problem/9974002 ()13 14    def setUp(self):15        # Call super's setUp().16        TestBase.setUp(self)17        # Find the line number to break at.18        self.line = line_number("main.cpp", "// Set break point at this line.")19 20    def test_with_run_command(self):21        """Test that that file and class static variables display correctly."""22        self.build()23        if "clang" in self.getCompiler() and "3.4" in self.getCompilerVersion():24            self.skipTest(25                "llvm.org/pr16214 -- clang emits partial DWARF for structures referenced via typedef"26            )27 28        self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)29 30        lldbutil.run_break_set_by_file_and_line(31            self, "main.cpp", self.line, num_expected_locations=1, loc_exact=True32        )33 34        self.runCmd("run", RUN_SUCCEEDED)35 36        # The stop reason of the thread should be breakpoint.37        self.expect(38            "thread list",39            STOPPED_DUE_TO_BREAKPOINT,40            substrs=["stopped", "stop reason = breakpoint"],41        )42 43        # This is the function to remove the custom formats in order to have a44        # clean slate for the next test case.45        def cleanup():46            self.runCmd("type summary clear", check=False)47 48        # Execute the cleanup function during test case tear down.49        self.addTearDownHook(cleanup)50 51        self.runCmd(52            'type summary add -s "${var.scalar} and ${var.pointer.first}" container'53        )54 55        self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])56 57        self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')58 59        self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])60 61        self.runCmd(62            'type summary add -s "${var.scalar} and ${var.pointer%S}" container'63        )64 65        self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])66 67        self.runCmd("type summary add -s foo contained")68 69        self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])70 71        self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')72 73        self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])74 75        self.runCmd(76            'type summary add -s "${var.scalar} and ${var.pointer%V}" container'77        )78 79        self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])80 81        self.runCmd(82            'type summary add -s "${var.scalar} and ${var.pointer.first}" container'83        )84 85        self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])86 87        self.runCmd("type summary delete contained")88        self.runCmd("n")89 90        self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])91 92        self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')93 94        self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])95 96        self.runCmd(97            'type summary add -s "${var.scalar} and ${var.pointer%S}" container'98        )99 100        self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])101 102        self.runCmd("type summary add -s foo contained")103 104        self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])105 106        self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')107 108        self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])109 110        self.runCmd(111            'type summary add -s "${var.scalar} and ${var.pointer%V}" container'112        )113 114        self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])115 116        self.runCmd(117            'type summary add -s "${var.scalar} and ${var.pointer.first}" container'118        )119 120        self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])121