1""" 2Test lldb data formatter subsystem. 3""" 4 5 6 7import lldb 8from lldbsuite.test.decorators import * 9from lldbsuite.test.lldbtest import * 10from lldbsuite.test import lldbutil 11 12 13class NSSetSyntheticTestCase(TestBase): 14 15 mydir = TestBase.compute_mydir(__file__) 16 17 def setUp(self): 18 # Call super's setUp(). 19 TestBase.setUp(self) 20 # Find the line number to break at. 21 self.line = line_number('main.m', '// Set break point at this line.') 22 23 @skipUnlessDarwin 24 def test_rdar12529957_with_run_command(self): 25 """Test that NSSet reports its synthetic children properly.""" 26 self.build() 27 self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) 28 29 lldbutil.run_break_set_by_file_and_line( 30 self, "main.m", self.line, num_expected_locations=1, loc_exact=True) 31 32 self.runCmd("run", RUN_SUCCEEDED) 33 34 # The stop reason of the thread should be breakpoint. 35 self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, 36 substrs=['stopped', 37 'stop reason = breakpoint']) 38 39 # This is the function to remove the custom formats in order to have a 40 # clean slate for the next test case. 41 def cleanup(): 42 self.runCmd('type format clear', check=False) 43 self.runCmd('type summary clear', check=False) 44 self.runCmd('type synth clear', check=False) 45 46 # Execute the cleanup function during test case tear down. 47 self.addTearDownHook(cleanup) 48 49 # Now check that we are displaying Cocoa classes correctly 50 self.expect('frame variable set', 51 substrs=['4 elements']) 52 self.expect('frame variable mutable', 53 substrs=['9 elements']) 54 self.expect( 55 'frame variable set --ptr-depth 1 -d run -T', 56 substrs=[ 57 '4 elements', 58 '[0]', 59 'hello', 60 '[1]', 61 '(int)2', 62 '[2]', 63 '(int)1', 64 '[3]', 65 'world', 66 ]) 67 self.expect( 68 'frame variable mutable --ptr-depth 1 -d run -T', 69 substrs=[ 70 '9 elements', 71 '(int)5', 72 '@"3 elements"', 73 '@"www.apple.com"', 74 '(int)3', 75 '@"world"', 76 '(int)4']) 77 78 self.runCmd("next") 79 self.expect('frame variable mutable', 80 substrs=['0 elements']) 81 82 self.runCmd("next") 83 self.expect('frame variable mutable', 84 substrs=['4 elements']) 85 self.expect( 86 'frame variable mutable --ptr-depth 1 -d run -T', 87 substrs=[ 88 '4 elements', 89 '[0]', 90 '(int)1', 91 '[1]', 92 '(int)2', 93 '[2]', 94 'hello', 95 '[3]', 96 'world', 97 ]) 98 99 self.runCmd("next") 100 self.expect('frame variable mutable', substrs=['4 elements']) 101 self.expect( 102 'frame variable mutable --ptr-depth 1 -d run -T', 103 substrs=[ 104 '4 elements', 105 '[0]', 106 '(int)1', 107 '[1]', 108 '(int)2', 109 '[2]', 110 'hello', 111 '[3]', 112 'world', 113 ]) 114