Files
claude-code 81282d0964
werkator build succeeded after 00:08
werkator/werkrevisor-statistics build succeeded after 00:26
a diagram shows where a review ends early or takes a shortcut (#59)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-08 20:12:35 +02:00

41 lines
1.6 KiB
Python

import importlib.util
import os
import unittest
import xml.etree.ElementTree as ET
from tests.fakes import ROOT
GENERATED = {
"review_inside.py": ("werkrevisor-review-inside.svg", "werkrevisor-review-inside-dark.svg"),
"review_decisions.py": ("werkrevisor-review-decisions.svg", "werkrevisor-review-decisions-dark.svg"),
}
def generator(name):
spec = importlib.util.spec_from_file_location(name[:-3], os.path.join(ROOT, "tools", "diagrams", name))
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
class DiagramsTest(unittest.TestCase):
def test_the_checked_in_diagrams_are_the_output_of_their_generators(self):
for name, (light, dark) in GENERATED.items():
module = generator(name)
for palette, svg_name in ((module.LIGHT, light), (module.DARK, dark)):
with self.subTest(svg=svg_name):
with open(os.path.join(ROOT, "docs", svg_name)) as f:
self.assertEqual(f.read(), module.svg(palette),
f"run python3 tools/diagrams/{name} and commit docs/{svg_name}")
def test_every_diagram_is_well_formed_svg(self):
for svg_name in sorted(n for n in os.listdir(os.path.join(ROOT, "docs")) if n.endswith(".svg")):
with self.subTest(svg=svg_name):
root = ET.parse(os.path.join(ROOT, "docs", svg_name)).getroot()
self.assertEqual(root.tag, "{http://www.w3.org/2000/svg}svg")
self.assertEqual(root.get("viewBox"), "0 0 1600 900")
if __name__ == "__main__":
unittest.main()