import unittest from pathlib import Path from tempfile import TemporaryDirectory from utils.github import pytest_summary as ps _XML = """ trace """ class TestRenderReport(unittest.TestCase): def _render(self, xml: str, name: str = "unit.xml") -> str: with TemporaryDirectory() as tmp: path = Path(tmp) / name path.write_text(xml, encoding="utf-8") return ps._render_report(path) def test_headline_counts_and_time(self) -> None: out = self._render(_XML) self.assertIn("### 🧪 unit — 🟢 2 · 🔴 1 · 🔵 1 · 3.0s", out) def test_failures_render_open_and_all_tests_collapsed(self) -> None: out = self._render(_XML) self.assertIn("| `tests.unit.test_b.TestB::test_broken` | 0.40s |", out) self.assertIn("All 4 tests (slowest first)", out) self.assertIn("| `tests.unit.test_a.TestA::test_slow` | 🟢 | 2.50s |", out) self.assertIn("| `tests.unit.test_b.TestB::test_off` | 🔵 | 0.00s |", out) def test_slowest_first_ordering(self) -> None: out = self._render(_XML) self.assertLess(out.index("test_slow"), out.index("test_fast")) def test_unparseable_xml_degrades_gracefully(self) -> None: out = self._render("not xml at all") self.assertIn("_Unparseable junit XML:", out) if __name__ == "__main__": unittest.main()