11 |
Options: |
Options: |
12 |
-h / --help Print this message and exit. |
-h / --help Print this message and exit. |
13 |
-e / --elements comma-seperated list of elements to check |
-e / --elements comma-seperated list of elements to check |
14 |
|
-s / --subtree Define subtree as root for checks |
15 |
|
-f / --fields comma-seperated list of element-name to check |
16 |
--check-attributes Check changes in attributes (changed descriptions, target...) |
--check-attributes Check changes in attributes (changed descriptions, target...) |
17 |
|
|
18 |
""" |
""" |
74 |
if f2 is not None: |
if f2 is not None: |
75 |
f2.close() |
f2.close() |
76 |
|
|
77 |
def perform(self, elements=None, check_attributes=False): |
def perform(self, elements=None, subtree=None, fields=None, check_attributes=False): |
78 |
log.info('Only checking %s elements' % ",".join(elements)) |
log.info('Only checking %s elements' % ",".join(elements or ['all'])) |
79 |
for element in self.elements: |
for element in self.elements: |
80 |
if elements is not None: |
if elements is not None: |
81 |
if element not in elements: continue |
if element not in elements: continue |
82 |
self.elements_old[element] = [] |
self.elements_old[element] = [] |
83 |
self.elements_new[element] = [] |
self.elements_new[element] = [] |
84 |
for e in self.old_xml_doc.findall("//%s" % element): |
if subtree: |
85 |
|
needle = '//*[@name="%s"]//%s' % (subtree, element) |
86 |
|
else: |
87 |
|
needle = '//%s' % (element) |
88 |
|
log.debug("Searching for %s" % needle) |
89 |
|
for e in self.old_xml_doc.findall(needle): |
90 |
|
if fields is not None: |
91 |
|
name = e.attrib.get('name') |
92 |
|
if str(name ) not in fields: |
93 |
|
log.debug('Old: Not found %s in %s' % (name, fields)) |
94 |
|
continue |
95 |
self.elements_old[element].append(e) |
self.elements_old[element].append(e) |
96 |
for e in self.new_xml_doc.findall("//%s" % element): |
for e in self.new_xml_doc.findall(needle): |
97 |
|
if fields is not None: |
98 |
|
name = e.attrib.get('name') |
99 |
|
if str(name )not in fields: |
100 |
|
log.debug('New: Not found %s in %s' % (name, fields)) |
101 |
|
continue |
102 |
self.elements_new[element].append(e) |
self.elements_new[element].append(e) |
103 |
self.diff_element(element, check_attributes) |
self.diff_element(element, check_attributes) |
104 |
|
|
145 |
break |
break |
146 |
if not found: |
if not found: |
147 |
error.append("New") |
error.append("New") |
148 |
|
if element == 'choice': |
149 |
|
error.extend(self.diff_choicelist(None, o, check_attributes)) |
150 |
|
|
151 |
if error: |
if error: |
152 |
out.append("Field: %s (%s)" % (name, element)) |
out.append("Field: %s (%s)" % (name, element)) |
163 |
old = {} |
old = {} |
164 |
new = {} |
new = {} |
165 |
errors = [] |
errors = [] |
166 |
for c in o.getchildren(): |
if o is not None: |
167 |
old[c.attrib.get('value')] = c |
for c in o.findall('.//bool'): |
168 |
for c in n.getchildren(): |
old[c.attrib.get('value')] = c |
169 |
new[c.attrib.get('value')] = c |
if n is not None: |
170 |
|
for c in n.findall('.//bool'): |
171 |
|
new[c.attrib.get('value')] = c |
172 |
|
|
173 |
for key in old.keys(): |
for key in old.keys(): |
174 |
if new.has_key(key): |
if new.has_key(key): |
213 |
|
|
214 |
def main(): |
def main(): |
215 |
try: |
try: |
216 |
opts, args = getopt.getopt(sys.argv[1:], 'hvVe:', |
opts, args = getopt.getopt(sys.argv[1:], 'hvVe:s:f:', |
217 |
['elements=', 'check-attributes']) |
['elements=', 'check-attributes', 'subtree=', 'fields=']) |
218 |
|
|
219 |
except getopt.error, msg: |
except getopt.error, msg: |
220 |
usage(1, msg) |
usage(1, msg) |
221 |
|
|
222 |
elements = None |
elements = None |
223 |
|
subtree = None |
224 |
|
fields = None |
225 |
check_attributes = False |
check_attributes = False |
226 |
for opt, arg in opts: |
for opt, arg in opts: |
227 |
if opt in ('-v'): |
if opt in ('-v'): |
233 |
if opt in ('-e', '--elements'): |
if opt in ('-e', '--elements'): |
234 |
elements = arg.split(',') |
elements = arg.split(',') |
235 |
log.debug('Elements: %s' % elements) |
log.debug('Elements: %s' % elements) |
236 |
|
if opt in ('-s', '--subtree'): |
237 |
|
subtree = arg |
238 |
|
log.debug('Subtree: %s' % subtree) |
239 |
|
if opt in ('-f', '--fields'): |
240 |
|
fields = arg.split(',') |
241 |
|
log.debug('Fields: %s' % fields) |
242 |
if opt in ('--check-attributes'): |
if opt in ('--check-attributes'): |
243 |
check_attributes = True |
check_attributes = True |
244 |
if len(args) < 2: |
if len(args) < 2: |
245 |
usage(1) |
usage(1) |
246 |
|
|
247 |
ins = Inspector(args[0], args[1]) |
ins = Inspector(args[0], args[1]) |
248 |
ins.perform(elements, check_attributes) |
ins.perform(elements, subtree, fields, check_attributes) |
249 |
|
|
250 |
if __name__ == '__main__': |
if __name__ == '__main__': |
251 |
main() |
main() |