def extract_metadata(state: State, xml):
logging.debug("Extracting metadata from {}".format(os.path.basename(xml)))
- tree = ET.parse(xml)
+ try:
+ tree = ET.parse(xml)
+ except ET.ParseError as e:
+ logging.error("{}: XML parse error, skipping: {}".format(os.path.basename(xml), e))
+ return
+
root = tree.getroot()
# We need just list of all example files in correct order, nothing else
logging.debug("Parsing {}".format(state.current))
- tree = ET.parse(xml)
+ try:
+ tree = ET.parse(xml)
+ except ET.ParseError as e:
+ logging.error("{}: XML parse error, skipping: {}".format(state.current, e))
+ return
+
root = tree.getroot()
assert root.tag == 'doxygen'
from distutils.version import LooseVersion
-from test import IntegrationTestCase, doxygen_version
+from test import BaseTestCase, IntegrationTestCase, doxygen_version
class Typography(IntegrationTestCase):
def __init__(self, *args, **kwargs):
def test_math(self):
self.run_dox2html5(wildcard='math.xml')
self.assertEqual(*self.actual_expected_contents('math.html'))
+
+class ParseError(BaseTestCase):
+ def __init__(self, *args, **kwargs):
+ super().__init__(__file__, 'parse_error', *args, **kwargs)
+
+ def test(self):
+ self.run_dox2html5(wildcard='broken.xml')
+
+ # The index file should be generated, no abort
+ self.assertTrue(os.path.exists(os.path.join(self.path, 'html', 'index.html')))