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

51 lines
2.1 KiB
Python

"""Provider-Layer: Fake-Umschaltung, harter Stopp ohne Rollen-Config, kein Fallback."""
import re
from pathlib import Path
import pytest
import agents
async def test_fake_umschaltung(fake_welt):
fake_welt.antwort_auf(r"-schneiden-", lambda prompt: "ANTWORT")
rc, out, err = await agents.run_agent("scan-x-schneiden-1", "egal", 5, role="schneiden")
assert (rc, out) == (0, "ANTWORT")
assert fake_welt.calls == ["scan-x-schneiden-1"]
async def test_stoerung_dann_fehler(fake_welt):
fake_welt.antwort_auf(r".", lambda prompt: "ok")
fake_welt.stoerungen.append({"muster": r"-schneiden-", "modus": "fehler", "mal": 1})
rc1, _, err1 = await agents.run_agent("scan-x-schneiden-1", "egal", 5, role="schneiden")
rc2, out2, _ = await agents.run_agent("scan-x-schneiden-1", "egal", 5, role="schneiden")
assert (rc1, err1) == (1, "fake-stoerung")
assert (rc2, out2) == (0, "ok")
async def test_infra_stoerung_wirft(fake_welt):
fake_welt.stoerungen.append({"muster": r".", "modus": "infra", "mal": 1})
with pytest.raises(agents.AgentInfraError):
await agents.run_agent("scan-x-schneiden-1", "egal", 5, role="schneiden")
async def test_unkonfigurierte_rolle_pausiert(monkeypatch):
"""Ohne Fake-Modus und ohne ROLLE_-Env: AgentInfraError (Lauf pausiert), kein Default."""
monkeypatch.delenv("PLANER_FAKE_AGENTS", raising=False)
monkeypatch.delenv("ROLLE_JUDGE", raising=False)
with pytest.raises(agents.AgentInfraError, match="kein Modell konfiguriert"):
await agents.run_agent("scan-x-judge-1", "egal", 5, role="judge")
def test_kein_fallback_codepfad():
"""Der Creator-Fallback (_available_cached / 'routed provider unavailable') darf
nicht mitportiert worden sein."""
quelle = Path(agents.__file__).read_text(encoding="utf-8")
assert "_available_cached" not in quelle
assert not re.search(r"run_provider", quelle)
def test_prioritaet_der_stufen():
assert agents._agent_priority("scan-p-sichten-1") < agents._agent_priority("scan-p-schneiden-9")
assert agents._agent_priority("irgendwas") == len(agents._STAGE_PRIORITY)