""" Test behavior of `po` and persistent results. """ import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * from lldbsuite.test import lldbutil class TestCase(TestBase): def setUp(self): TestBase.setUp(self) self.build() lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.m")) @skipUnlessDarwin def test_po_does_not_print_persistent_result(self): """Test `po` doesn't advertise a persistent result variable.""" self.expect("po obj", matching=False, substrs=["$0 = "]) @skipUnlessDarwin def test_po_does_not_keep_persistent_result(self): """Test `po` doesn't leak a persistent result variable.""" self.expect("po obj") # Verify `po` used a temporary persistent result. In other words, there # should be no $0 at this point. self.expect("expression $0", error=True) self.expect("expression obj", substrs=["$0 = "]) @skipUnlessDarwin def test_expression_description_verbosity(self): """Test printing object description _and_ opt-in to persistent results.""" self.expect("expression -O -vfull -- obj", substrs=["$0 = "]) self.expect("expression $0", substrs=["$0 = "])