author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 08 Jul 2019 13:31:11 +0100 | |
changeset 178 | 5d1c3e5fab6b |
parent 177 | fd154978bab5 |
permissions | -rw-r--r-- |
177
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
# |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
# jv:vdb - Visual / VM Debugger |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
# Copyright (C) 2015-now Jan Vrany |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
# |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
# This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License' |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
# |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
# You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/ |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
# |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
""" |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
This script contains tests Pythin vdb support. |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
To run all tests |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
gdb -q --ex "source vdbtests.py" -ex 'py run()' -ex "quit" |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
To run single test, for example, _instanceTests.test_context_03(): |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
gdb -q --ex "source vdbtests.py" -ex 'py run(parse_and_eval_test("test_01"))' -ex "quit" |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
""" |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
import os |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
import sys |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
import unittest |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
vdb_tests_python_dir = os.path.dirname(__file__) |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
vdb_python_dir = os.path.join(vdb_tests_python_dir, '..' , '..' , 'python') |
178
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
28 |
libgdbs_tests_dir = os.path.join(vdb_python_dir, '..', '..' , 'libgdbs' , 'tests') |
177
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
sys.path.append(vdb_python_dir) |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
|
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
import gdb |
fd154978bab5
Load Python support code upon startup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
import vdb |
178
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
34 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
35 |
class parse_and_eval_test(unittest.TestCase): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
36 |
def setUp(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
37 |
test_prog_dir = os.path.join(libgdbs_tests_dir, 'c', 'x86_64-pc-linux-gnu') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
38 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
39 |
gdb.execute('set startup-with-shell off') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
40 |
gdb.execute('set auto-load safe-path /') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
41 |
gdb.execute('set python print-stack full') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
42 |
gdb.execute('set breakpoint pending on') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
43 |
gdb.execute('set confirm off') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
44 |
gdb.execute('set pagination off') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
45 |
gdb.execute('file "%s"' % os.path.join(test_prog_dir, 'py-varobj')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
46 |
gdb.execute('source %s' % os.path.join(test_prog_dir, '..', 'py-varobj.py')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
47 |
gdb.execute('source %s' % os.path.join(test_prog_dir, '..', 'py-framedecorator.py')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
48 |
gdb.execute('b py-varobj.c : 22') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
49 |
gdb.execute('r') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
50 |
gdb.execute('frame 0') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
51 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
52 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
53 |
def tearDown(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
54 |
vdb.unregister_evaluators() |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
55 |
gdb.execute("del") |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
56 |
try: |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
57 |
gdb.execute('kill') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
58 |
except: |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
59 |
pass |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
60 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
61 |
def test_01a(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
62 |
self.assertRaises(vdb.Error, vdb.parse_and_eval, 'foo') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
63 |
self.assertEqual(gdb.Value(1), vdb.parse_and_eval('1')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
64 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
65 |
def test_01b(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
66 |
v = vdb.parse_and_eval('&c1') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
67 |
self.assertEqual('struct _cons *', str(v.type)) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
68 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
69 |
def test_01c(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
70 |
v = vdb.parse_and_eval('&c1') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
71 |
self.assertEqual('struct _cons *', str(v.type)) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
72 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
73 |
def test_02a(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
74 |
self.assertEqual(gdb.Value(12), vdb.parse_and_eval('syntheticLocal0')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
75 |
self.assertEqual(gdb.Value(42), vdb.parse_and_eval('syntheticLocal2')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
76 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
77 |
def test_03(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
78 |
def parse_and_eval(expr): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
79 |
if expr == 'a': |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
80 |
return gdb.Value(1) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
81 |
elif expr == 'b': |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
82 |
return None |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
83 |
elif expr == 'c': |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
84 |
raise Exception("Bad") |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
85 |
vdb.register_evaluator(parse_and_eval) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
86 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
87 |
self.assertEqual(gdb.Value(1), vdb.parse_and_eval('a')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
88 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
89 |
self.assertRaises(vdb.Error, vdb.parse_and_eval, 'b') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
90 |
self.assertRaises(Exception, vdb.parse_and_eval, 'c') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
91 |
self.assertRaises(vdb.Error, vdb.parse_and_eval, 'd') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
92 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
93 |
vdb.unregister_evaluator(parse_and_eval) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
94 |
self.assertRaises(vdb.Error, vdb.parse_and_eval, 'a') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
95 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
96 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
97 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
98 |
class VarObj_test(unittest.TestCase): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
99 |
def setUp(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
100 |
test_prog_dir = os.path.join(libgdbs_tests_dir, 'c', 'x86_64-pc-linux-gnu') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
101 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
102 |
gdb.execute('set startup-with-shell off') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
103 |
gdb.execute('set auto-load safe-path /') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
104 |
gdb.execute('set python print-stack full') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
105 |
gdb.execute('set breakpoint pending on') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
106 |
gdb.execute('set confirm off') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
107 |
gdb.execute('set pagination off') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
108 |
gdb.execute('file "%s"' % os.path.join(test_prog_dir, 'py-varobj')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
109 |
gdb.execute('source %s' % os.path.join(test_prog_dir, '..', 'py-varobj.py')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
110 |
gdb.execute('source %s' % os.path.join(test_prog_dir, '..', 'py-framedecorator.py')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
111 |
gdb.execute('b py-varobj.c : 22') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
112 |
gdb.execute('r') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
113 |
gdb.execute('frame 0') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
114 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
115 |
def tearDown(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
116 |
vdb.unregister_evaluators() |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
117 |
gdb.execute("del") |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
118 |
try: |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
119 |
gdb.execute('kill') |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
120 |
except: |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
121 |
pass |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
122 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
123 |
def test_01(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
124 |
varobj = vdb._VarObj('test_01', '1', gdb.Value(1)) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
125 |
self.assertEqual({ 'name' : 'test_01' , |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
126 |
'numchild' : 0, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
127 |
'exp' : '1', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
128 |
'value' : '1', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
129 |
'type' : 'long long', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
130 |
'has_more' : 0, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
131 |
'dynamic' : 1, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
132 |
'frozen' : 0 |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
133 |
}, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
134 |
varobj.to_mi()) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
135 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
136 |
def test_02(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
137 |
varobj = vdb._VarObj('test_02', '&c1', gdb.parse_and_eval('&c1')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
138 |
self.assertEqual({ 'name' : 'test_02' , |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
139 |
'numchild' : 0, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
140 |
'exp' : '&c1', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
141 |
'value' : '(...)', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
142 |
'type' : 'struct _cons *', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
143 |
'has_more' : 1, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
144 |
'dynamic' : 1, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
145 |
'frozen' : 0 |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
146 |
}, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
147 |
varobj.to_mi()) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
148 |
children = list(varobj.children()) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
149 |
self.assertEqual(2, len(children)) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
150 |
self.assertEqual('car', children[0].exp) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
151 |
self.assertEqual('cdr', children[1].exp) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
152 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
153 |
self.assertEqual('test_02.car', children[0].name) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
154 |
self.assertEqual('test_02.cdr', children[1].name) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
155 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
156 |
self.assertEqual(varobj, children[0].parent) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
157 |
self.assertEqual(varobj, children[1].parent) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
158 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
159 |
children2 = list(varobj.children()) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
160 |
self.assertEqual(children[0], children2[0]) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
161 |
self.assertEqual(children[1], children2[1]) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
162 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
163 |
def test_03(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
164 |
varobj = vdb._VarObj('test_02', '&c1', gdb.parse_and_eval('&c1')) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
165 |
children = list(varobj.children()) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
166 |
self.assertEqual(2, len(children)) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
167 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
168 |
varobj.set_visualizer(vdb._DefaultVisualizer(varobj._value)) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
169 |
children = list(varobj.children()) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
170 |
self.assertEqual(0, len(children)) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
171 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
172 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
173 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
174 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
175 |
class MI_test(unittest.TestCase): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
176 |
def setUp(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
177 |
pass |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
178 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
179 |
def tearDown(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
180 |
vdb._VarObjs.unregister_all() |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
181 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
182 |
def test_01(self): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
183 |
self.assertEqual({ 'name' : 'test_01' , |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
184 |
'numchild' : 0, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
185 |
'exp' : '1', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
186 |
'value' : '1', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
187 |
'type' : 'int', |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
188 |
'has_more' : 0, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
189 |
'dynamic' : 1, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
190 |
'frozen' : 0 |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
191 |
}, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
192 |
vdb._var_create(['test_01', '*' , '1'])) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
193 |
self.assertEqual(None, |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
194 |
vdb._var_delete(['test_01'])) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
195 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
196 |
|
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
197 |
def run(test = None): |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
198 |
if test == None: |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
199 |
unittest.main() |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
200 |
else: |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
201 |
suite = unittest.TestSuite() |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
202 |
suite.addTest(test) |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
203 |
runner = unittest.TextTestRunner() |
5d1c3e5fab6b
Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
177
diff
changeset
|
204 |
runner.run(suite) |