|  | """ | 
|  | Test lldb data formatter subsystem. | 
|  | """ | 
|  |  | 
|  | from __future__ import print_function | 
|  |  | 
|  |  | 
|  | import os | 
|  | import time | 
|  | import lldb | 
|  | from lldbsuite.test.lldbtest import * | 
|  | import lldbsuite.test.lldbutil as lldbutil | 
|  |  | 
|  |  | 
|  | class VarInAggregateMisuseTestCase(TestBase): | 
|  |  | 
|  | mydir = TestBase.compute_mydir(__file__) | 
|  |  | 
|  | 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() | 
|  | 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 --summary-string \"SUMMARY SUCCESS ${var}\" Summarize") | 
|  |  | 
|  | self.expect('frame variable mine_ptr', | 
|  | substrs=['SUMMARY SUCCESS summarize_ptr_t @ ']) | 
|  |  | 
|  | self.expect('frame variable *mine_ptr', | 
|  | substrs=['SUMMARY SUCCESS summarize_t @']) | 
|  |  | 
|  | self.runCmd( | 
|  | "type summary add --summary-string \"SUMMARY SUCCESS ${var.first}\" Summarize") | 
|  |  | 
|  | self.expect('frame variable mine_ptr', | 
|  | substrs=['SUMMARY SUCCESS 10']) | 
|  |  | 
|  | self.expect('frame variable *mine_ptr', | 
|  | substrs=['SUMMARY SUCCESS 10']) | 
|  |  | 
|  | self.runCmd("type summary add --summary-string \"${var}\" Summarize") | 
|  | self.runCmd( | 
|  | "type summary add --summary-string \"${var}\" -e TwoSummarizes") | 
|  |  | 
|  | self.expect('frame variable', | 
|  | substrs=['(TwoSummarizes) twos = TwoSummarizes @ ', | 
|  | 'first = summarize_t @ ', | 
|  | 'second = summarize_t @ ']) | 
|  |  | 
|  | self.runCmd( | 
|  | "type summary add --summary-string \"SUMMARY SUCCESS ${var.first}\" Summarize") | 
|  | self.expect('frame variable', | 
|  | substrs=['(TwoSummarizes) twos = TwoSummarizes @ ', | 
|  | 'first = SUMMARY SUCCESS 1', | 
|  | 'second = SUMMARY SUCCESS 3']) |