"""Unit tests for scripts/generate_badges.py.""" from pathlib import Path from unittest.mock import MagicMock, patch from click.testing import CliRunner from devx.tools.generate_badges import ( COLOR_HEX, cli, coverage_color, doc_coverage_color, extract_coverage, extract_doc_coverage, extract_test_count, generate_badges, make_badge, read_version, render_svg, run_command, ) class TestRunCommand: @patch("devx.tools.generate_badges.subprocess.run") def test_returns_returncode_stdout_stderr(self, mock_run: MagicMock) -> None: mock_run.return_value = MagicMock(returncode=0, stdout="out", stderr="err") rc, out, err = run_command(["echo", "hello"]) assert rc == 0 assert out == "out" assert err == "err" mock_run.assert_called_once() class TestMakeBadge: def test_creates_valid_badge_dict(self) -> None: badge = make_badge("coverage", "100%", "brightgreen") assert badge == { "schemaVersion": 1, "label": "coverage", "message": "100%", "color": "brightgreen", } class TestRenderSvg: def test_generates_valid_svg(self) -> None: svg = render_svg("coverage", "100%", "brightgreen") assert svg.startswith("\n") assert "coverage" in svg assert "100%" in svg assert COLOR_HEX["brightgreen"] in svg def test_uses_color_hex_for_known_colors(self) -> None: svg = render_svg("tests", "573 passing", "brightgreen") assert "#4c1" in svg def test_uses_hex_directly_for_unknown_hex_color(self) -> None: svg = render_svg("label", "msg", "#abc123") assert "#abc123" in svg def test_uses_lightgrey_for_unknown_named_color(self) -> None: svg = render_svg("label", "msg", "nonexistent") assert "#9f9f9f" in svg def test_escapes_xml_special_chars(self) -> None: svg = render_svg("label", "