Skip to content

Commit

Permalink
XML errors: make file and line more clear
Browse files Browse the repository at this point in the history
  • Loading branch information
woutdenolf committed Jun 20, 2023
1 parent 97b26da commit 2b625d7
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions dev_tools/nxdl/syntax.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from typing import Optional
from contextlib import contextmanager

import lxml.etree

Expand All @@ -16,13 +17,17 @@ def validate_definition(
xml_schema: Optional[lxml.etree.XMLSchema] = None,
):
xml_file_name = str(xml_file_name)
try:
with _handle_xml_error(xml_file_name, lxml.etree.XMLSyntaxError):
xml_tree = lxml.etree.parse(xml_file_name)
except lxml.etree.XMLSyntaxError:
raise errors.XMLSyntaxError(xml_file_name)
if xml_schema is None:
xml_schema = nxdl_schema()
try:
with _handle_xml_error(xml_file_name, lxml.etree.DocumentInvalid):
xml_schema.assertValid(xml_tree)
except lxml.etree.DocumentInvalid:
raise errors.NXDLSyntaxError(xml_file_name)


@contextmanager
def _handle_xml_error(xml_file_name: str, *exception_types):
try:
yield
except exception_types as e:
raise errors.XMLSyntaxError(f"\n {xml_file_name}:\n {e}") from e

0 comments on commit 2b625d7

Please sign in to comment.