xref: /llvm-project/lldb/test/API/lang/objc/objc-po-hint/TestObjcPoHint.py (revision ecbe78c124a78a4ea6e06b1d52ce281dcc394332)
1import lldb
2from lldbsuite.test.decorators import *
3from lldbsuite.test.lldbtest import *
4from lldbsuite.test import lldbutil
5
6
7class TestObjcPoHint(TestBase):
8    NO_DEBUG_INFO_TESTCASE = True
9
10    def test_show_po_hint(self):
11        ### Test that the po hint is shown once with the DWIM print command
12        self.build()
13        _, _, _, _ = lldbutil.run_to_source_breakpoint(
14            self, "Set breakpoint here", lldb.SBFileSpec("main.m")
15        )
16        # Make sure the hint is printed the first time
17        self.expect(
18            "dwim-print -O -- foo",
19            substrs=[
20                "note: object description requested, but type doesn't implement "
21                'a custom object description. Consider using "p" instead of "po"',
22                "<Foo: 0x",
23            ],
24        )
25
26        # Make sure it's not printed again.
27        self.expect(
28            "dwim-print -O -- foo",
29            substrs=["note: object description"],
30            matching=False,
31        )
32
33    def test_show_po_hint_disabled(self):
34        ### Test that when the setting is disabled the hint is not printed
35        self.build()
36        _, _, _, _ = lldbutil.run_to_source_breakpoint(
37            self, "Set breakpoint here", lldb.SBFileSpec("main.m")
38        )
39        self.runCmd("setting set show-dont-use-po-hint false")
40        # Make sure the hint is printed the first time
41        self.expect(
42            "dwim-print -O -- foo",
43            substrs=["note: object description"],
44            matching=False,
45        )
46