From ef29eb1b8f01b982006f043aeb2d6aa3bf4f92c8 Mon Sep 17 00:00:00 2001 From: codex Date: Wed, 20 May 2026 03:39:09 -0300 Subject: [PATCH] test(ariadne): cover triage diagnosis edge cases --- tests/test_testing_triage_diagnosis.py | 115 +++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/tests/test_testing_triage_diagnosis.py b/tests/test_testing_triage_diagnosis.py index a63dc97..8033316 100644 --- a/tests/test_testing_triage_diagnosis.py +++ b/tests/test_testing_triage_diagnosis.py @@ -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"