[PATCH osinfo-db 14/15] tests: Use lxml

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Fedora Users]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux