Home | History | Annotate | Download | only in radar_9673664
      1 """
      2 Test example snippets from the lldb 'help expression' output.
      3 """
      4 
      5 import os, time
      6 import unittest2
      7 import lldb
      8 from lldbtest import *
      9 import lldbutil
     10 
     11 class Radar9673644TestCase(TestBase):
     12 
     13     mydir = os.path.join("expression_command", "radar_9673664")
     14 
     15     def setUp(self):
     16         # Call super's setUp().
     17         TestBase.setUp(self)
     18         # Find the line number to break inside main().
     19         self.main_source = "main.c"
     20         self.line = line_number(self.main_source, '// Set breakpoint here.')
     21 
     22     # rdar://problem/9673664
     23     @expectedFailureFreeBSD # llvm.org/pr16697
     24     @skipIfLinux # llvm.org/pr14805: expressions that require memory allocation evaluate incorrectly on Linux
     25     def test_expr_commands(self):
     26         """The following expression commands should just work."""
     27         self.buildDefault()
     28 
     29         self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
     30 
     31         lldbutil.run_break_set_by_file_and_line (self, self.main_source, self.line, num_expected_locations=1, loc_exact=True)
     32 
     33         self.runCmd("run", RUN_SUCCEEDED)
     34 
     35         # rdar://problem/9673664 lldb expression evaluation problem
     36 
     37         self.expect('expr char c[] = "foo"; c[0]',
     38             substrs = ["'f'"])
     39         # runCmd: expr char c[] = "foo"; c[0]
     40         # output: (char) $0 = 'f'
     41 
     42 
     43 if __name__ == '__main__':
     44     import atexit
     45     lldb.SBDebugger.Initialize()
     46     atexit.register(lambda: lldb.SBDebugger.Terminate())
     47     unittest2.main()
     48