]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - packages/Python/lldbsuite/test/python_api/sbvalue_persist/TestSBValuePersist.py
Vendor import of lldb trunk r256945:
[FreeBSD/FreeBSD.git] / packages / Python / lldbsuite / test / python_api / sbvalue_persist / TestSBValuePersist.py
1 """Test SBValue::Persist"""
2
3 from __future__ import print_function
4
5
6
7 import os, sys, time
8 import lldb
9 from lldbsuite.test.lldbtest import *
10 import lldbsuite.test.lldbutil as lldbutil
11
12 class SBValuePersistTestCase(TestBase):
13
14     mydir = TestBase.compute_mydir(__file__)
15
16     @add_test_categories(['pyapi'])
17     @expectedFailureWindows("llvm.org/pr24772")
18     def test(self):
19         """Test SBValue::Persist"""
20         self.build()
21         self.setTearDownCleanup()
22         self.runCmd("file 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(fooPersist.GetValueAsUnsigned(0) == 10, "fooPersist != 10")
61         self.assertTrue(barPersist.GetPointeeData().sint32[0] == 4, "barPersist != 4")
62         self.assertTrue(bazPersist.GetSummary() == '"85"', "bazPersist != 85")
63         
64         self.runCmd("continue")
65
66         self.assertTrue(fooPersist.IsValid(), "fooPersist is not valid")
67         self.assertTrue(barPersist.IsValid(), "barPersist is not valid")
68         self.assertTrue(bazPersist.IsValid(), "bazPersist is not valid")
69
70         self.assertTrue(fooPersist.GetValueAsUnsigned(0) == 10, "fooPersist != 10")
71         self.assertTrue(barPersist.GetPointeeData().sint32[0] == 4, "barPersist != 4")
72         self.assertTrue(bazPersist.GetSummary() == '"85"', "bazPersist != 85")
73         
74         self.expect("expr *(%s)" % (barPersist.GetName()), substrs = ['= 4'])