No one outside Apple can access the associated radars and understand what these tests are about. These tests have other problems, but this makes them at least possible to comprehend for everyone.
119 lines
4.0 KiB
Python
119 lines
4.0 KiB
Python
"""
|
|
Test lldb data formatter subsystem.
|
|
"""
|
|
|
|
|
|
import lldb
|
|
from lldbsuite.test.lldbtest import *
|
|
import lldbsuite.test.lldbutil as lldbutil
|
|
|
|
|
|
class SummaryStringOnFailDataFormatterTestCase(TestBase):
|
|
def setUp(self):
|
|
# Call super's setUp().
|
|
TestBase.setUp(self)
|
|
# Find the line number to break at.
|
|
self.line = line_number("main.cpp", "// Set break point at this line.")
|
|
|
|
def test_with_run_command(self):
|
|
"""Test that that file and class static variables display correctly."""
|
|
self.build()
|
|
if "clang" in self.getCompiler() and "3.4" in self.getCompilerVersion():
|
|
self.skipTest(
|
|
"llvm.org/pr16214 -- clang emits partial DWARF for structures referenced via typedef"
|
|
)
|
|
|
|
self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
|
|
|
|
lldbutil.run_break_set_by_file_and_line(
|
|
self, "main.cpp", self.line, num_expected_locations=1, loc_exact=True
|
|
)
|
|
|
|
self.runCmd("run", RUN_SUCCEEDED)
|
|
|
|
# The stop reason of the thread should be breakpoint.
|
|
self.expect(
|
|
"thread list",
|
|
STOPPED_DUE_TO_BREAKPOINT,
|
|
substrs=["stopped", "stop reason = breakpoint"],
|
|
)
|
|
|
|
# This is the function to remove the custom formats in order to have a
|
|
# clean slate for the next test case.
|
|
def cleanup():
|
|
self.runCmd("type summary clear", check=False)
|
|
|
|
# Execute the cleanup function during test case tear down.
|
|
self.addTearDownHook(cleanup)
|
|
|
|
self.runCmd(
|
|
'type summary add -s "${var.scalar} and ${var.pointer.first}" container'
|
|
)
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])
|
|
|
|
self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])
|
|
|
|
self.runCmd(
|
|
'type summary add -s "${var.scalar} and ${var.pointer%S}" container'
|
|
)
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])
|
|
|
|
self.runCmd("type summary add -s foo contained")
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])
|
|
|
|
self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])
|
|
|
|
self.runCmd(
|
|
'type summary add -s "${var.scalar} and ${var.pointer%V}" container'
|
|
)
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])
|
|
|
|
self.runCmd(
|
|
'type summary add -s "${var.scalar} and ${var.pointer.first}" container'
|
|
)
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])
|
|
|
|
self.runCmd("type summary delete contained")
|
|
self.runCmd("n")
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])
|
|
|
|
self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])
|
|
|
|
self.runCmd(
|
|
'type summary add -s "${var.scalar} and ${var.pointer%S}" container'
|
|
)
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])
|
|
|
|
self.runCmd("type summary add -s foo contained")
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])
|
|
|
|
self.runCmd('type summary add -s "${var.scalar} and ${var.pointer}" container')
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "foo"])
|
|
|
|
self.runCmd(
|
|
'type summary add -s "${var.scalar} and ${var.pointer%V}" container'
|
|
)
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "0x000000"])
|
|
|
|
self.runCmd(
|
|
'type summary add -s "${var.scalar} and ${var.pointer.first}" container'
|
|
)
|
|
|
|
self.expect("frame variable mine", substrs=["mine = ", "1", "<parent is NULL>"])
|