Ctrl K
ComunidadGuías…

tests/test_eval_case_execution.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
from dm.eval.run_eval import _execute_case


CASE = {"id": "C1", "category": "direct", "question": "q", "grader": "refusal"}


def test_case_execution_contains_agent_failures_without_leaking_details():
    def broken_agent(*args, **kwargs):
        raise RuntimeError("token=secret")

    outcome = _execute_case(CASE, agent_runner=broken_agent)
    assert outcome.passed is False
    assert outcome.expected == "agent unavailable"
    assert outcome.answer == ""
    assert outcome.session_id == ""
    assert outcome.error_code == "AGENT_ERROR"
    assert outcome.duration_ms >= 0
    assert "secret" not in repr(outcome)


def test_case_execution_contains_invalid_agent_envelopes():
    outcome = _execute_case(CASE, agent_runner=lambda *a, **k: {"answer": "ok"})
    assert outcome.error_code == "AGENT_RESULT_ERROR"


def test_case_execution_contains_grader_failures_but_keeps_answer_context():
    def agent(*args, **kwargs):
        return {"answer": "safe answer", "session_id": "S1"}

    def grader(case, answer):
        raise RuntimeError("postgres://secret")

    outcome = _execute_case(CASE, agent_runner=agent, grader=grader)
    assert outcome.error_code == "GRADER_ERROR"
    assert outcome.answer == "safe answer"
    assert outcome.session_id == "S1"