]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/TestPtrRef2Typedef.py
Vendor import of lldb trunk r290819:
[FreeBSD/FreeBSD.git] / packages / Python / lldbsuite / test / functionalities / data-formatter / ptr_ref_typedef / TestPtrRef2Typedef.py
1 """
2 Test lldb data formatter subsystem.
3 """
4
5 from __future__ import print_function
6
7
8 import os
9 import time
10 import lldb
11 from lldbsuite.test.lldbtest import *
12 import lldbsuite.test.lldbutil as lldbutil
13
14
15 class PtrRef2TypedefTestCase(TestBase):
16
17     mydir = TestBase.compute_mydir(__file__)
18
19     def setUp(self):
20         # Call super's setUp().
21         TestBase.setUp(self)
22         # Find the line number to break at.
23         self.line = line_number('main.cpp', '// Set breakpoint here')
24
25     def test_with_run_command(self):
26         """Test that a pointer/reference to a typedef is formatted as we want."""
27         self.build()
28         self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
29
30         lldbutil.run_break_set_by_file_and_line(
31             self, "main.cpp", self.line, num_expected_locations=1, loc_exact=True)
32
33         self.runCmd("run", RUN_SUCCEEDED)
34
35         # The stop reason of the thread should be breakpoint.
36         self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
37                     substrs=['stopped',
38                              'stop reason = breakpoint'])
39
40         # This is the function to remove the custom formats in order to have a
41         # clean slate for the next test case.
42         def cleanup():
43             self.runCmd('type format clear', check=False)
44             self.runCmd('type summary clear', check=False)
45
46         # Execute the cleanup function during test case tear down.
47         self.addTearDownHook(cleanup)
48
49         self.runCmd('type summary add --cascade true -s "IntPointer" "int *"')
50         self.runCmd('type summary add --cascade true -s "IntLRef" "int &"')
51         self.runCmd('type summary add --cascade true -s "IntRRef" "int &&"')
52
53         self.expect(
54             "frame variable x",
55             substrs=[
56                 '(Foo *) x = 0x',
57                 'IntPointer'])
58         # note: Ubuntu 12.04 x86_64 build with gcc 4.8.2 is getting a
59         # const after the ref that isn't showing up on FreeBSD. This
60         # tweak changes the behavior so that the const is not part of
61         # the match.
62         self.expect(
63             "frame variable y", substrs=[
64                 '(Foo &', ') y = 0x', 'IntLRef'])
65         self.expect(
66             "frame variable z", substrs=[
67                 '(Foo &&', ') z = 0x', 'IntRRef'])