test(docs): align readme badges with registry

This commit is contained in:
732642856
2026-06-26 19:22:54 +08:00
parent 9232f0e140
commit 1aff908309
2 changed files with 35 additions and 2 deletions
+2 -2
View File
@@ -5,8 +5,8 @@
[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue)](https://www.python.org/)
[![Techniques](https://img.shields.io/badge/techniques-68-blueviolet)](references/technique_registry.json)
[![Covered](https://img.shields.io/badge/covered-58-green)](references/technique_registry.json)
[![Complete](https://img.shields.io/badge/complete-10-brightgreen)](references/technique_registry.json)
[![Covered](https://img.shields.io/badge/covered-59-green)](references/technique_registry.json)
[![Complete](https://img.shields.io/badge/complete-9-brightgreen)](references/technique_registry.json)
[![Partial](https://img.shields.io/badge/partial-0-lightgrey)](references/technique_registry.json)
---
+33
View File
@@ -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"]