test(docs): align readme badges with registry
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
[](LICENSE)
|
||||
[](https://www.python.org/)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Keep README capability badges aligned with the current registry."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import re
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
README = ROOT / "README.md"
|
||||
REGISTRY = ROOT / "references" / "technique_registry.json"
|
||||
|
||||
|
||||
def _readme_badge_value(name: str) -> int:
|
||||
text = README.read_text(encoding="utf-8")
|
||||
match = re.search(rf"\[!\[{re.escape(name)}\]\(https://img\.shields\.io/badge/{name.lower()}-(\d+)-", text)
|
||||
assert match, f"Missing README badge for {name}"
|
||||
return int(match.group(1))
|
||||
|
||||
|
||||
def test_readme_badges_match_technique_registry_counts() -> None:
|
||||
registry = json.loads(REGISTRY.read_text(encoding="utf-8"))
|
||||
techniques = registry["techniques"].values()
|
||||
counts = Counter(item["status"] for item in techniques)
|
||||
total = len(registry["techniques"])
|
||||
|
||||
assert _readme_badge_value("Techniques") == total
|
||||
assert _readme_badge_value("Covered") == counts["covered"]
|
||||
assert _readme_badge_value("Complete") == counts["complete"]
|
||||
assert _readme_badge_value("Partial") == counts["partial"]
|
||||
Reference in New Issue
Block a user