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