Skip to content

Commit 075d6f2

Browse files
committed
Handled malformed xml generated by Doxygen for QgsDocCoverage test
1 parent 6deb520 commit 075d6f2

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

tests/src/python/test_qgsdoccoverage.py

+20-9
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,26 @@ def parseClassElem(e):
8686
def parseFile(f):
8787
documentable_members = 0
8888
documented_members = 0
89-
for event, elem in ET.iterparse(f):
90-
if event == 'end' and elem.tag == 'compounddef':
91-
if elemIsDocumentableClass(elem):
92-
members, documented = parseClassElem(elem)
93-
documentable_members += members
94-
documented_members += documented
95-
if documented < members:
96-
print "Class {}, {}/{} members documented".format(elem.find('compoundname').text,documented,members)
97-
elem.clear()
89+
try:
90+
for event, elem in ET.iterparse(f):
91+
if event == 'end' and elem.tag == 'compounddef':
92+
if elemIsDocumentableClass(elem):
93+
members, documented = parseClassElem(elem)
94+
documentable_members += members
95+
documented_members += documented
96+
if documented < members:
97+
print "Class {}, {}/{} members documented".format(elem.find('compoundname').text,documented,members)
98+
elem.clear()
99+
except ET.ParseError as e:
100+
#sometimes Doxygen generates malformed xml (eg for < and > operators)
101+
line_num, col = e.position
102+
with open(f, 'r') as xml_file:
103+
for i, l in enumerate(xml_file):
104+
if i == line_num - 1:
105+
line = l
106+
break
107+
caret = '{:=>{}}'.format('^', col )
108+
print 'ParseError in {}\n{}\n{}\n{}'.format(f,e,line,caret)
98109
return documentable_members, documented_members
99110

100111

0 commit comments

Comments
 (0)