| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 1 | """ |
| 2 | Tests that ObjC member variables are available where they should be. |
| 3 | """ |
| Jim Ingham | 63dfc72 | 2012-09-22 00:05:11 +0000 | [diff] [blame] | 4 | import lldb |
| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 5 | from lldbtest import * |
| Jim Ingham | 63dfc72 | 2012-09-22 00:05:11 +0000 | [diff] [blame] | 6 | import lldbutil |
| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 7 | |
| 8 | class ObjCSelfTestCase(TestBase): |
| 9 | |
| Greg Clayton | 4570d3e | 2013-12-10 23:19:29 +0000 | [diff] [blame] | 10 | mydir = TestBase.compute_mydir(__file__) |
| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 11 | |
| Robert Flack | 13c7ad9 | 2015-03-30 14:12:17 +0000 | [diff] [blame] | 12 | @skipUnlessDarwin |
| Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame^] | 13 | def test_with_run_command(self): |
| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 14 | """Test that the appropriate member variables are available when stopped in Objective-C class and instance methods""" |
| Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame^] | 15 | self.build() |
| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 16 | self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) |
| 17 | |
| 18 | self.set_breakpoint(line_number('main.m', '// breakpoint 1')) |
| 19 | self.set_breakpoint(line_number('main.m', '// breakpoint 2')) |
| 20 | |
| Sean Callanan | 05834cd | 2015-07-01 23:56:30 +0000 | [diff] [blame] | 21 | self.runCmd("process launch", RUN_SUCCEEDED) |
| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 22 | |
| 23 | self.expect("expression -- m_a = 2", |
| 24 | startstr = "(int) $0 = 2") |
| 25 | |
| 26 | self.runCmd("process continue") |
| 27 | |
| 28 | # This would be disallowed if we enforced const. But we don't. |
| 29 | self.expect("expression -- m_a = 2", |
| 30 | error=True) |
| 31 | |
| 32 | self.expect("expression -- s_a", |
| 33 | startstr = "(int) $1 = 5") |
| 34 | |
| Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame^] | 35 | def set_breakpoint(self, line): |
| 36 | lldbutil.run_break_set_by_file_and_line (self, "main.m", line, num_expected_locations=1, loc_exact=True) |
| 37 | |
| Sean Callanan | 72e4940 | 2011-08-05 23:43:37 +0000 | [diff] [blame] | 38 | if __name__ == '__main__': |
| 39 | import atexit |
| 40 | lldb.SBDebugger.Initialize() |
| 41 | atexit.register(lambda: lldb.SBDebugger.Terminate()) |
| 42 | unittest2.main() |