test(ariadne): cover triage diagnosis edge cases
This commit is contained in:
parent
f42a147391
commit
ef29eb1b8f
@ -150,3 +150,118 @@ def test_diagnose_testing_triage_handles_disabled_and_bad_json(monkeypatch) -> N
|
||||
|
||||
assert diagnosis["status"] == "ok"
|
||||
assert "model_json_parse_failed" in diagnosis["unknowns"][0]
|
||||
|
||||
|
||||
def test_latest_testing_triage_diagnosis_decodes_stored_json() -> None:
|
||||
storage = DummyStorage()
|
||||
payload = {"kind": "testing_triage_diagnosis", "status": "ok"}
|
||||
storage.events.append((testing_triage_diagnosis.TRIAGE_DIAGNOSIS_EVENT_TYPE, json.dumps(payload)))
|
||||
|
||||
assert testing_triage_diagnosis.latest_testing_triage_diagnosis(storage) == payload # type: ignore[arg-type]
|
||||
|
||||
storage.events.append((testing_triage_diagnosis.TRIAGE_DIAGNOSIS_EVENT_TYPE, "not json"))
|
||||
assert testing_triage_diagnosis.latest_testing_triage_diagnosis(storage) is None # type: ignore[arg-type]
|
||||
|
||||
storage.events.append((testing_triage_diagnosis.TRIAGE_DIAGNOSIS_EVENT_TYPE, json.dumps(["not", "a", "dict"])))
|
||||
assert testing_triage_diagnosis.latest_testing_triage_diagnosis(storage) is None # type: ignore[arg-type]
|
||||
|
||||
|
||||
def test_model_configuration_helpers_normalize_settings(monkeypatch) -> None:
|
||||
monkeypatch.setattr(
|
||||
testing_triage_diagnosis,
|
||||
"settings",
|
||||
SettingsStub(
|
||||
testing_triage_model_url=" http://ollama.local/ ",
|
||||
testing_triage_model="",
|
||||
testing_triage_model_timeout_sec=0,
|
||||
),
|
||||
)
|
||||
|
||||
assert testing_triage_diagnosis.model_diagnosis_enabled()
|
||||
assert testing_triage_diagnosis._model_url() == "http://ollama.local" # noqa: SLF001
|
||||
assert testing_triage_diagnosis._model_name() == "" # noqa: SLF001
|
||||
assert testing_triage_diagnosis._model_timeout() == 180.0 # noqa: SLF001
|
||||
|
||||
|
||||
def test_diagnose_testing_triage_handles_model_request_failure(monkeypatch) -> None:
|
||||
class FailingClient:
|
||||
def __init__(self, *args, **kwargs) -> None: # type: ignore[no-untyped-def]
|
||||
return None
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, *args) -> None: # type: ignore[no-untyped-def]
|
||||
return None
|
||||
|
||||
def post(self, url, json=None): # type: ignore[no-untyped-def]
|
||||
raise RuntimeError("ollama unavailable")
|
||||
|
||||
monkeypatch.setattr(testing_triage_diagnosis, "settings", SettingsStub(testing_triage_model_url="http://ollama"))
|
||||
monkeypatch.setattr(testing_triage_diagnosis.httpx, "Client", FailingClient)
|
||||
|
||||
diagnosis = testing_triage_diagnosis.diagnose_testing_triage(
|
||||
{"generated_at": "evidence-time", "summary": {"status": "warning", "problem_count": 2}}
|
||||
)
|
||||
|
||||
assert diagnosis["status"] == "unavailable"
|
||||
assert diagnosis["evidence_generated_at"] == "evidence-time"
|
||||
assert "model_request_failed" in diagnosis["diagnosis"]["root_cause"]
|
||||
|
||||
|
||||
def test_prompt_and_evidence_payload_use_safe_defaults(monkeypatch) -> None:
|
||||
monkeypatch.setattr(testing_triage_diagnosis, "_MAX_MODEL_EVIDENCE_CHARS", 120)
|
||||
prompt = testing_triage_diagnosis._diagnosis_prompt( # noqa: SLF001
|
||||
{
|
||||
"kind": "testing_triage_bundle",
|
||||
"summary": "bad summary",
|
||||
"evidence": {"large": "x" * 300},
|
||||
"unknowns": "bad unknowns",
|
||||
}
|
||||
)
|
||||
evidence = testing_triage_diagnosis._model_evidence_payload( # noqa: SLF001
|
||||
{"summary": "bad summary", "evidence": "bad evidence", "unknowns": "bad unknowns"}
|
||||
)
|
||||
|
||||
assert prompt.endswith("[truncated]")
|
||||
assert evidence["summary"] == {}
|
||||
assert evidence["evidence"] == {}
|
||||
assert evidence["unknowns"] == []
|
||||
|
||||
|
||||
def test_diagnosis_from_model_coerces_fallback_values(monkeypatch) -> None:
|
||||
monkeypatch.setattr(testing_triage_diagnosis, "settings", SettingsStub(testing_triage_model="triage-model"))
|
||||
diagnosis = testing_triage_diagnosis._diagnosis_from_model( # noqa: SLF001
|
||||
{
|
||||
"generated_at": "bundle-time",
|
||||
"summary": {"status": "ok", "problem_count": 0, "failed_suites": []},
|
||||
"unknowns": ["existing_unknown"],
|
||||
},
|
||||
{
|
||||
"headline": "",
|
||||
"root_cause": None,
|
||||
"confidence": "certain",
|
||||
"needs_human": "false",
|
||||
"next_actions": "Verify current dashboard state.",
|
||||
"evidence_refs": ["suite", "", 7],
|
||||
},
|
||||
"raw response",
|
||||
"parse warning",
|
||||
)
|
||||
|
||||
assert diagnosis["status"] == "ok"
|
||||
assert diagnosis["model"] == "triage-model"
|
||||
assert diagnosis["diagnosis"]["headline"] == "Testing triage needs review."
|
||||
assert diagnosis["diagnosis"]["confidence"] == "low"
|
||||
assert diagnosis["diagnosis"]["needs_human"] is False
|
||||
assert diagnosis["diagnosis"]["next_actions"] == ["Verify current dashboard state."]
|
||||
assert diagnosis["diagnosis"]["evidence_refs"] == ["suite", "7"]
|
||||
assert diagnosis["unknowns"] == ["existing_unknown", "parse warning"]
|
||||
|
||||
|
||||
def test_default_evidence_refs_include_failed_suites() -> None:
|
||||
refs = testing_triage_diagnosis._default_evidence_refs( # noqa: SLF001
|
||||
{"status": "needs_attention", "problem_count": 3, "failed_suites": ["a", "b", "c", "d", "e", "f", "g"]}
|
||||
)
|
||||
|
||||
assert refs[-1] == "summary.failed_suites=a,b,c,d,e,f"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user