1"""Test SBValue::Persist""" 2 3 4 5import lldb 6from lldbsuite.test.decorators import * 7from lldbsuite.test.lldbtest import * 8from lldbsuite.test import lldbutil 9 10 11class SBValuePersistTestCase(TestBase): 12 13 mydir = TestBase.compute_mydir(__file__) 14 NO_DEBUG_INFO_TESTCASE = True 15 16 @add_test_categories(['pyapi']) 17 @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24772") 18 def test(self): 19 """Test SBValue::Persist""" 20 self.build() 21 self.setTearDownCleanup() 22 self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) 23 24 lldbutil.run_break_set_by_source_regexp(self, "break here") 25 26 self.runCmd("run", RUN_SUCCEEDED) 27 28 # The stop reason of the thread should be breakpoint. 29 self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, 30 substrs=['stopped', 31 'stop reason = breakpoint']) 32 33 # This is the function to remove the custom formats in order to have a 34 # clean slate for the next test case. 35 def cleanup(): 36 self.runCmd('type format clear', check=False) 37 self.runCmd('type summary clear', check=False) 38 self.runCmd('type filter clear', check=False) 39 self.runCmd('type synthetic clear', check=False) 40 41 # Execute the cleanup function during test case tear down. 42 self.addTearDownHook(cleanup) 43 44 foo = self.frame().FindVariable("foo") 45 bar = self.frame().FindVariable("bar") 46 baz = self.frame().FindVariable("baz") 47 48 self.assertTrue(foo.IsValid(), "foo is not valid") 49 self.assertTrue(bar.IsValid(), "bar is not valid") 50 self.assertTrue(baz.IsValid(), "baz is not valid") 51 52 fooPersist = foo.Persist() 53 barPersist = bar.Persist() 54 bazPersist = baz.Persist() 55 56 self.assertTrue(fooPersist.IsValid(), "fooPersist is not valid") 57 self.assertTrue(barPersist.IsValid(), "barPersist is not valid") 58 self.assertTrue(bazPersist.IsValid(), "bazPersist is not valid") 59 60 self.assertTrue( 61 fooPersist.GetValueAsUnsigned(0) == 10, 62 "fooPersist != 10") 63 self.assertTrue( 64 barPersist.GetPointeeData().sint32[0] == 4, 65 "barPersist != 4") 66 self.assertEquals(bazPersist.GetSummary(), '"85"', "bazPersist != 85") 67 68 self.runCmd("continue") 69 70 self.assertTrue(fooPersist.IsValid(), "fooPersist is not valid") 71 self.assertTrue(barPersist.IsValid(), "barPersist is not valid") 72 self.assertTrue(bazPersist.IsValid(), "bazPersist is not valid") 73 74 self.assertTrue( 75 fooPersist.GetValueAsUnsigned(0) == 10, 76 "fooPersist != 10") 77 self.assertTrue( 78 barPersist.GetPointeeData().sint32[0] == 4, 79 "barPersist != 4") 80 self.assertEquals(bazPersist.GetSummary(), '"85"', "bazPersist != 85") 81 82 self.expect("expr *(%s)" % (barPersist.GetName()), substrs=['= 4']) 83