diff --git a/tests/test_issue_1513_slim_core.py b/tests/test_issue_1513_slim_core.py
index f4de58a3..e617ac06 100644
--- a/tests/test_issue_1513_slim_core.py
+++ b/tests/test_issue_1513_slim_core.py
@@ -369,19 +369,13 @@ def test_spacy_load_missing_hint():
def test_xml_parser_handles_comments():
+ from semantica.parse.xml_parser import etree as real_lxml_etree
+
xml_content = (
"- Value
"
""
)
- # lxml engine
- p_lxml = XMLParser(engine="lxml")
- res_lxml = p_lxml.parse(xml_content)
- assert res_lxml.root.tag == "root"
- assert len(res_lxml.root.children) == 1
- assert res_lxml.root.children[0].tag == "item"
- assert res_lxml.root.children[0].text == "Value"
-
- # etree engine
+ # etree engine (always available in a core-only install)
p_etree = XMLParser(engine="etree")
res_etree = p_etree.parse(xml_content)
assert res_etree.root.tag == "root"
@@ -389,9 +383,26 @@ def test_xml_parser_handles_comments():
assert res_etree.root.children[0].tag == "item"
assert res_etree.root.children[0].text == "Value"
+ # lxml engine (only meaningful when the 'documents' extra is installed)
+ if real_lxml_etree is None:
+ pytest.skip("lxml not installed (requires semantica[documents])")
+ p_lxml = XMLParser(engine="lxml")
+ res_lxml = p_lxml.parse(xml_content)
+ assert res_lxml.root.tag == "root"
+ assert len(res_lxml.root.children) == 1
+ assert res_lxml.root.children[0].tag == "item"
+ assert res_lxml.root.children[0].text == "Value"
+
def test_public_api_ingestor_handles_xml_comments():
- from semantica.ingest.public_api_ingestor import PublicAPIIngestor
+ from semantica.ingest.public_api_ingestor import (
+ PublicAPIIngestor,
+ lxml_etree as real_lxml_etree,
+ safe_xml_etree as real_safe_xml_etree,
+ )
+
+ if real_lxml_etree is None and real_safe_xml_etree is None:
+ pytest.skip("neither defusedxml nor lxml installed (requires semantica[documents]/[explorer])")
xml_content = "- Value
"
ingestor = PublicAPIIngestor(rate_limit_delay=0)
@@ -403,7 +414,9 @@ def test_public_api_ingestor_handles_xml_comments():
assert parsed["children"][0]["tag"] == "item"
assert parsed["children"][0]["text"] == "Value"
- # 2. lxml fallback
+ # 2. lxml fallback (only meaningful when lxml is actually installed)
+ if real_lxml_etree is None:
+ pytest.skip("lxml not installed (requires semantica[documents])")
with patch("semantica.ingest.public_api_ingestor.safe_xml_etree", None):
parsed_lxml = ingestor._parse_xml(xml_content)
assert parsed_lxml["tag"] == "root"