lxml is a popular XML parsing library that uses libxml2 behind the scenes and exports an ElementTree API, among other things. lxml is more python ecosystem friendly as its able to be installed from pip, unlike python-libxml2, which can help with CI in some cases. This lets us drop the explicit libxml2 dep, and also makes it easier to get nicer error messages when XML schema validation fails Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> --- tests/osinfo.py | 3 ++- tests/test_schema.py | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/osinfo.py b/tests/osinfo.py index ad0eea2..3585f44 100644 --- a/tests/osinfo.py +++ b/tests/osinfo.py @@ -2,7 +2,8 @@ # See the COPYING file in the top-level directory. import re -import xml.etree.ElementTree as ET + +import lxml.etree as ET def _cache_property(fn): diff --git a/tests/test_schema.py b/tests/test_schema.py index 98f58ef..d8d6052 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -1,18 +1,18 @@ # This work is licensed under the GNU GPLv2 or later. # See the COPYING file in the top-level directory. -import libxml2 +import lxml.etree as ET import pytest from . import util SCHEMA = util.DataFiles.schema -PARSER = libxml2.relaxNGNewParserCtxt(SCHEMA) -VALID = PARSER.relaxNGParse().relaxNGNewValidCtxt() +RELAXNG = ET.RelaxNG(ET.parse(SCHEMA)) @pytest.mark.parametrize("path", util.DataFiles.xmls()) def test_schema(path): - doc = libxml2.parseFile(path) - assert VALID.relaxNGValidateDoc(doc) == 0 + if not RELAXNG.validate(ET.parse(path)): + # pylint: disable=no-member + raise AssertionError(str(RELAXNG.error_log.last_error)) -- 2.21.0 _______________________________________________ Libosinfo mailing list Libosinfo@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libosinfo