Files
planer/backend/tests/test_modell_ids.py
2026-07-22 16:12:23 +02:00

33 lines
1.2 KiB
Python

"""Wächter für Leitprinzip 2: Modell-IDs stehen NUR in der .env, nie im Code.
Greppt den gesamten backend-Quellcode (ohne tests/) nach Modell-ID-Mustern.
Schlägt dieser Test an, hat jemand ein Modell hart verdrahtet.
"""
import re
from pathlib import Path
BACKEND = Path(__file__).resolve().parent.parent
MUSTER = re.compile(r"claude-\w+-\d|MiniMax-M\d|\bopus\b|\bsonnet\b|\bhaiku\b|gpt-\d",
re.IGNORECASE)
def test_keine_modell_ids_im_code():
treffer = []
for pfad in BACKEND.rglob("*.py"):
if "tests" in pfad.parts:
continue
for nr, zeile in enumerate(pfad.read_text(encoding="utf-8").splitlines(), 1):
if MUSTER.search(zeile):
treffer.append(f"{pfad.relative_to(BACKEND)}:{nr}: {zeile.strip()}")
assert not treffer, "Modell-IDs im Code gefunden (gehören in die .env):\n" + "\n".join(treffer)
def test_keine_modell_ids_in_templates():
templates = BACKEND / "templates"
if not templates.is_dir():
return
treffer = [f"{p.name}:{nr}" for p in templates.rglob("*.md")
for nr, zeile in enumerate(p.read_text(encoding="utf-8").splitlines(), 1)
if MUSTER.search(zeile)]
assert not treffer, f"Modell-IDs in Templates: {treffer}"