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()