38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
|
|
"""Tests for the frozen Hermes triage prompt and its job scoping."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from ariadne.services import hermes_triage_prompt
|
||
|
|
|
||
|
|
|
||
|
|
BUNDLE = {"incident_id": "metis/272", "jenkins": {"job": "metis"}}
|
||
|
|
|
||
|
|
|
||
|
|
def test_demo_job_prompt_permits_the_demo_action() -> None:
|
||
|
|
prompt = hermes_triage_prompt.build_prompt(
|
||
|
|
"hermes-triage-demo/12", "hermes-triage-demo", {"incident_id": "hermes-triage-demo/12"}
|
||
|
|
)
|
||
|
|
assert "The Jenkins job under analysis is hermes-triage-demo." in prompt
|
||
|
|
assert "Set human_required to false when hermes-triage-demo is hermes-triage-demo" in prompt
|
||
|
|
|
||
|
|
|
||
|
|
def test_real_job_prompt_forbids_the_demo_classification() -> None:
|
||
|
|
prompt = hermes_triage_prompt.build_prompt("metis/272", "metis", BUNDLE)
|
||
|
|
assert "The Jenkins job under analysis is metis." in prompt
|
||
|
|
assert (
|
||
|
|
"reserved for the job hermes-triage-demo. When metis is any other job they are forbidden"
|
||
|
|
in prompt
|
||
|
|
)
|
||
|
|
assert "Set human_required to false when metis is hermes-triage-demo" in prompt
|
||
|
|
|
||
|
|
|
||
|
|
def test_bundle_is_appended_compactly() -> None:
|
||
|
|
prompt = hermes_triage_prompt.build_prompt("metis/272", "metis", BUNDLE)
|
||
|
|
assert prompt.endswith('Bundle:\n{"incident_id":"metis/272","jenkins":{"job":"metis"}}')
|
||
|
|
|
||
|
|
|
||
|
|
def test_no_placeholders_survive_rendering() -> None:
|
||
|
|
prompt = hermes_triage_prompt.build_prompt("metis/272", "metis", BUNDLE)
|
||
|
|
for placeholder in ("__INCIDENT_ID__", "__JOB__", "__DEMO_JOB__", "__BUNDLE__"):
|
||
|
|
assert placeholder not in prompt
|