Mercurial > paraspace
annotate paraspace/tests/dexfile_test.py @ 28:5ce7ca1187b3
Pass throught markers for dex types
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Tue, 07 Jun 2011 22:57:28 +0800 |
parents | 15cb829ac442 |
children | b0cc5da28141 |
rev | line source |
---|---|
16 | 1 from paraspace import dexfile |
2 import os | |
3 | |
4 def block_sizes_test(): | |
5 srcdir = os.path.dirname(__file__) | |
6 srcroot = os.path.join(srcdir, '..', '..') | |
7 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex') | |
8 dex = dexfile.DEXFile.open(testdatapath) | |
9 assert dex.stringIds.data_size == 5384 | |
10 assert dex.typeIds.data_size == 704 | |
11 assert dex.protoIds.data_size == 1776 | |
12 assert dex.fieldIds.data_size == 1944 | |
13 assert dex.methodIds.data_size == 3552 | |
14 assert dex.classDefs.data_size == 1600 | |
15 assert dex.classDatas.data_size == 2052 | |
16 assert dex.typeLists.data_size == 838 | |
17 assert dex.codeItems.data_size == 30688 | |
18 assert dex.annotationSetItems.data_size == 412 | |
19 assert dex.annotationsDirectoryItems.data_size == 792 | |
20 assert dex.annotationItems.data_size == 642 | |
21 assert dex.encodedArrayItems.data_size == 139 | |
22 assert dex.debugInfoItems.data_size == 6353 | |
23 assert dex.stringDataItems.data_size == 23492 | |
24 pass | |
25 | |
26 | |
20
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
27 def dependencies_test(): |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
28 from paraspace import dex_deptracker |
23
fff40aabefab
Move collect_dependencies() to dex_deptracker.py
Thinker K.F. Li <thinker@codemud.net>
parents:
20
diff
changeset
|
29 |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
30 deps = dex_deptracker.collect_all_dep_decls() |
20
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
31 assert deps['_DEX_AnnotationItem.typeIdx'][0] == dexfile.depend_idx |
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
32 assert deps['_DEX_AnnotationItem.typeIdx'][1] == 'DEXFile.typeIds' |
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
33 assert deps['_DEX_FieldId.typeIdx'][0] == dexfile.depend_idx |
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
34 assert deps['_DEX_FieldId.typeIdx'][1] == 'DEXFile.typeIds' |
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
35 assert deps['_DEX_ClassDef.staticValuesOff'][0] == dexfile.depend_off |
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
36 assert deps['_DEX_ClassDef.staticValuesOff'][1] == '_DEX_EncodedArrayItem' |
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
37 assert deps['_DEX_Try.handlerOff'][0] == dexfile.depend_off_rel |
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
38 assert deps['_DEX_Try.handlerOff'][1] == '_DEX_Catch' |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
39 assert deps['_DEX_Try.handlerOff'][2] == '_DEX_Code.handlers_size' |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
40 pass |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
41 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
42 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
43 def resolve_name_path_test(): |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
44 from paraspace.dex_deptracker import _resolve_name_path |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
45 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
46 obj, parent = _resolve_name_path('_DEX_ClassData.staticFields.items') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
47 assert obj == list |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
48 obj, parent = _resolve_name_path('_DEX_ClassData.staticFields.items.*') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
49 assert obj == dexfile._DEX_Field |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
50 obj, parent = _resolve_name_path('_DEX_ClassData.staticFields.items.1') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
51 assert obj == dexfile._DEX_Field |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
52 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
53 obj, parent = _resolve_name_path('_DEX_Catch.catchAllHandler.value') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
54 assert obj == dexfile._DEX_CatchAllHandler |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
55 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
56 key = dexfile._DEX_AnnotationMember_noname.kDexAnnotationNull |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
57 obj, parent = _resolve_name_path('_DEX_AnnotationMember_noname.value.' + |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
58 repr(key)) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
59 assert isinstance(obj, dexfile.abs_value) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
60 pass |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
61 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
62 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
63 def find_dep_decls_from_clazz_test(): |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
64 from paraspace.dex_deptracker import _find_dep_decls_from_clazz |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
65 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
66 dex_types = dict([(dex_type_name, getattr(dexfile, dex_type_name)) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
67 for dex_type_name in dir(dexfile) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
68 if dex_type_name.startswith('_DEX_')]) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
69 deps = _find_dep_decls_from_clazz('_DEX_ProtoId', dexfile._DEX_ProtoId, |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
70 dex_types) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
71 assert len(deps) == 3 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
72 assert '_DEX_ProtoId.shortyIdx' in deps |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
73 assert deps['_DEX_ProtoId.shortyIdx'][0] == dexfile.depend_idx |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
74 assert deps['_DEX_ProtoId.shortyIdx'][1] == 'DEXFile.stringIds' |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
75 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
76 assert deps['_DEX_ProtoId.parametersOff'][1] == '_DEX_TypeList' |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
77 pass |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
78 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
79 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
80 def find_dep_decls_from_clazz__array_test(): |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
81 from paraspace.dex_deptracker import _find_dep_decls_from_clazz |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
82 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
83 dex_types = dict([(dex_type_name, getattr(dexfile, dex_type_name)) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
84 for dex_type_name in dir(dexfile) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
85 if dex_type_name.startswith('_DEX_')]) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
86 deps = _find_dep_decls_from_clazz('_DEX_AnnotationSetItem', |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
87 dexfile._DEX_AnnotationSetItem, |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
88 dex_types) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
89 assert len(deps) == 1 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
90 name_path = '_DEX_AnnotationSetItem.annotationOffs.items.*' |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
91 assert name_path in deps |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
92 assert deps[name_path][0] == dexfile.depend_off |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
93 assert deps[name_path][1] == '_DEX_AnnotationItem' |
20
265f39947b36
Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
16
diff
changeset
|
94 pass |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
95 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
96 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
97 def travel_dex_relocatable__array_test(): |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
98 from paraspace.dex_deptracker import _travel_dex_relocatable |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
99 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
100 srcdir = os.path.dirname(__file__) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
101 srcroot = os.path.join(srcdir, '..', '..') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
102 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
103 dex = dexfile.DEXFile.open(testdatapath) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
104 dexroot = dex.typeLists.items[0] |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
105 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
106 itr = _travel_dex_relocatable(dexroot) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
107 pathes = [v[2] for v in itr] |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
108 assert len(pathes) == 6 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
109 assert '_DEX_TypeList' in pathes |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
110 assert '_DEX_TypeList.padding' in pathes |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
111 assert '_DEX_TypeList.num' in pathes |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
112 assert '_DEX_TypeList.typeItems' in pathes |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
113 assert '_DEX_TypeList.typeItems.items' in pathes |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
114 assert '_DEX_TypeList.typeItems.items.0' in pathes |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
115 pass |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
116 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
117 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
118 def _install_dexfile_4_deptracker(): |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
119 global dexfile |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
120 import imp |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
121 from paraspace import dex_deptracker |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
122 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
123 try: |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
124 new_dexfile = imp.load_compiled('dexfile', dexfile.__file__) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
125 except ImportError: |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
126 new_dexfile = imp.load_source('dexfile', dexfile.__file__) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
127 pass |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
128 dex_deptracker.dexfile = new_dexfile |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
129 dexfile = new_dexfile |
28
5ce7ca1187b3
Pass throught markers for dex types
Thinker K.F. Li <thinker@codemud.net>
parents:
27
diff
changeset
|
130 dex_deptracker._nest_types = (dexfile.array, dexfile.cond, dexfile.switch) |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
131 pass |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
132 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
133 |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
134 def travel_dex_type_test(): |
27
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
135 from paraspace.dex_deptracker import collect_all_dep_decls |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
136 from paraspace.dex_deptracker import _install_markers |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
137 from paraspace.dex_deptracker import _travel_dex_type |
27
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
138 |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
139 _install_dexfile_4_deptracker() |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
140 |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
141 attr_infos = [attr_info |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
142 for attr_info in \ |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
143 _travel_dex_type(dexfile._DEX_AnnotationsDirectoryItem, |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
144 '_DEX_AnnotationsDirectoryItem') |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
145 ] |
27
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
146 attr_names = set([attr_info[1] |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
147 for attr_info in attr_infos]) |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
148 assert '_DEX_AnnotationsDirectoryItem.classAnnotationsOff' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
149 assert '_DEX_AnnotationsDirectoryItem.fieldsSize' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
150 assert '_DEX_AnnotationsDirectoryItem.methodsSize' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
151 assert '_DEX_AnnotationsDirectoryItem.parametersSize' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
152 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
153 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems.items.*' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
154 assert '_DEX_AnnotationsDirectoryItem.methodAnnotationsItems' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
155 assert '_DEX_AnnotationsDirectoryItem.parameterAnnotationsItems' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
156 |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
157 all_dep_decls = collect_all_dep_decls() |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
158 _install_markers(all_dep_decls) |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
159 |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
160 attr_infos = [attr_info |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
161 for attr_info in \ |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
162 _travel_dex_type(dexfile._DEX_AnnotationsDirectoryItem, |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
163 '_DEX_AnnotationsDirectoryItem') |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
164 ] |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
165 attr_names = set([attr_info[1] |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
166 for attr_info in attr_infos]) |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
167 assert '_DEX_AnnotationsDirectoryItem.classAnnotationsOff' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
168 assert '_DEX_AnnotationsDirectoryItem.fieldsSize' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
169 assert '_DEX_AnnotationsDirectoryItem.methodsSize' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
170 assert '_DEX_AnnotationsDirectoryItem.parametersSize' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
171 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
172 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems.items.*' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
173 assert '_DEX_AnnotationsDirectoryItem.methodAnnotationsItems' in attr_names |
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
174 assert '_DEX_AnnotationsDirectoryItem.parameterAnnotationsItems' in attr_names |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
175 pass |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
176 |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
177 |
27
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
178 def _install_markers_test(): |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
179 from paraspace.dex_deptracker import collect_all_dep_decls |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
180 from paraspace.dex_deptracker import _install_markers, _idx_marker |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
181 from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
182 from paraspace.dex_deptracker import _patch_dex_type_markers |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
183 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
184 _install_dexfile_4_deptracker() |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
185 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
186 all_dep_decls = collect_all_dep_decls() |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
187 _install_markers(all_dep_decls) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
188 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
189 assert isinstance(dexfile._DEX_Code.back_type.handlers_size, |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
190 _rel_offset_marker) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
191 assert dexfile._DEX_TypeList.__class__ == _offset_marker |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
192 |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
193 _patch_dex_type_markers(all_dep_decls) |
27
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
194 assert isinstance(dexfile._DEX_TypeList, _offset_marker) |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
195 print all_dep_decls.keys() |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
196 print dexfile.DEXFile.typeLists.child_type |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
197 assert isinstance(dexfile.DEXFile.typeLists.child_type, _offset_marker) |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
198 pass |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
199 |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
200 |
27
15cb829ac442
travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
26
diff
changeset
|
201 def _link_dependencies_test(): |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
202 from paraspace.dex_deptracker import collect_all_dep_decls |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
203 from paraspace.dex_deptracker import _link_dependencies |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
204 from paraspace.dex_deptracker import _install_markers, _idx_marker |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
205 from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
206 from paraspace.dex_deptracker import _patch_dex_type_markers |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
207 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
208 _install_dexfile_4_deptracker() |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
209 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
210 all_dep_decls = collect_all_dep_decls() |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
211 _install_markers(all_dep_decls) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
212 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker) |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
213 _patch_dex_type_markers(all_dep_decls) |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
214 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
215 srcdir = os.path.dirname(__file__) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
216 srcroot = os.path.join(srcdir, '..', '..') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
217 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex') |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
218 dex = dexfile.DEXFile.open(testdatapath) |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
219 |
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
220 _link_dependencies(dex, all_dep_decls) |
26
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
221 |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
222 code_item = dex.codeItems.items[0] |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
223 print code_item.debugInfoOff.__class__ |
b30a0d29a62f
Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents:
25
diff
changeset
|
224 assert code_item.debugInfoOff.__class__ == dexfile._DEX_DebugInfoItem |
25
670167ed06bb
test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents:
23
diff
changeset
|
225 pass |