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