fix: ship the real DTD in the Pelican plugin

This commit is contained in:
randogoth 2026-10-11 20:55:07 +03:00
parent f54d350216
commit 884300f3cf
8 changed files with 483 additions and 74 deletions

View file

@ -14,6 +14,12 @@ COPIES = {
"mews-0.1.dtd": ROOT / "dtd" / "mews-0.1.dtd",
}
# The Pelican plugin is a separate distributable package, so it carries its own
# copy of the DTD rather than importing one. It shipped a hand-written
# placeholder for a while, which silently stripped tables, ordered lists, forms
# and the body variant class out of every page it produced.
PLUGIN_DTD = ROOT / "pelican-mews" / "pelican" / "plugins" / "mews" / "dtd" / "mews.dtd"
def test_packaged_copies_match_the_originals():
for name, original in COPIES.items():
@ -28,3 +34,10 @@ def test_the_spec_quotes_the_same_stylesheet():
spec = (ROOT / "doc" / "SPEC.md").read_text()
quoted = spec.split("```css\n", 1)[1].split("```", 1)[0]
assert quoted.strip() == (ROOT / "mews-0.1.css").read_text().strip()
def test_the_pelican_plugin_bundles_the_real_dtd():
canonical = (ROOT / "dtd" / "mews-0.1.dtd").read_bytes()
assert PLUGIN_DTD.read_bytes() == canonical, (
f"{PLUGIN_DTD} differs from dtd/mews-0.1.dtd. Copy the original over it."
)