1c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan""" 2c617a4cb4a451be9d7e97d7af6e165d282b5390fSean CallananTests that ObjC member variables are available where they should be. 3c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan""" 4431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Inghamimport lldb 5c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callananfrom lldbtest import * 6431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Inghamimport lldbutil 7c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 8c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callananclass ObjCSelfTestCase(TestBase): 9c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 10c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan mydir = os.path.join("lang", "objc", "self") 11c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 12c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") 1321b1984e161b0cadee331d32bfd721eccfdf4b1fJohnny Chen @dsym_test 14c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan def test_with_dsym_and_run_command(self): 15c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan """Test that the appropriate member variables are available when stopped in Objective-C class and instance methods""" 16c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.buildDsym() 17c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.self_commands() 18c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 1940c9d75f2f6402227fed4e0a25daf18b683cb5e7Daniel Malea @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") 2021b1984e161b0cadee331d32bfd721eccfdf4b1fJohnny Chen @dwarf_test 21c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan def test_with_dwarf_and_run_command(self): 22c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan """Test that the appropriate member variables are available when stopped in Objective-C class and instance methods""" 23c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.buildDwarf() 24c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.self_commands() 25c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 26c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan def setUp(self): 27c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan TestBase.setUp(self) 28c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 29c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan def set_breakpoint(self, line): 30431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham lldbutil.run_break_set_by_file_and_line (self, "main.m", line, num_expected_locations=1, loc_exact=True) 31c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 32c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan def self_commands(self): 33c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan """Test that the appropriate member variables are available when stopped in Objective-C class and instance methods""" 34c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) 35c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 36c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.set_breakpoint(line_number('main.m', '// breakpoint 1')) 37c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.set_breakpoint(line_number('main.m', '// breakpoint 2')) 38c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 39c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.runCmd("process launch", RUN_SUCCEEDED) 40c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 41c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.expect("expression -- m_a = 2", 42c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan startstr = "(int) $0 = 2") 43c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 44c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.runCmd("process continue") 45c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 46c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan # This would be disallowed if we enforced const. But we don't. 47c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.expect("expression -- m_a = 2", 48c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan error=True) 49c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 50c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan self.expect("expression -- s_a", 51c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan startstr = "(int) $1 = 5") 52c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 53c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callananif __name__ == '__main__': 54c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan import atexit 55c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan lldb.SBDebugger.Initialize() 56c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan atexit.register(lambda: lldb.SBDebugger.Terminate()) 57c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan unittest2.main() 58