ariadne/tests/test_hermes_incident_attribution.py

55 lines
2.0 KiB
Python
Raw Normal View History

"""Tests that an issue attributes its finding to whoever actually made it."""
from __future__ import annotations
from ariadne.services import hermes_incident_body as body
from ariadne.services import hermes_incident_issue as module
def test_body_does_not_claim_a_diagnosis_that_never_happened() -> None:
"""A hung build is escalated without any model call.
Saying it came "from a Hermes Agent diagnosis" would misattribute a direct
observation to a model conclusion.
"""
context = module.issue_context(
{"incident_id": "metis/272", "job": "metis", "build_number": 272},
{
"bundle": {
"jenkins": {
"url": "https://ci.example/job/metis/272/",
"console_failures": [],
"console_tail": "Build metis #272 has been running for 75.0 minutes.",
}
},
"outcome": None,
"authorize_reason": "hung_build",
"run_id": None,
},
)
rendered = body.issue_body(context)
assert "No Hermes diagnosis was requested" in rendered
assert "from a Hermes Agent diagnosis" not in rendered
assert "has been running for 75.0 minutes" in rendered
def test_body_keeps_the_hermes_attribution_when_a_run_happened() -> None:
context = module.issue_context(
{"incident_id": "metis/272", "job": "metis", "build_number": 272},
{"bundle": {}, "outcome": None, "authorize_reason": "x", "run_id": "run_abc"},
)
rendered = body.issue_body(context)
assert "run `run_abc`" in rendered
assert "No Hermes diagnosis was requested" not in rendered
def test_observation_is_omitted_when_a_diagnosis_cited_facts() -> None:
"""Console text is a fallback, not a duplicate of a real diagnosis."""
jenkins = {"console_failures": [{"text": "boom"}], "console_tail": "tail text"}
assert module._observation(jenkins) == ""
assert module._observation(None) == ""
assert module._observation({"console_tail": " only tail "}) == "only tail"