← Files AkinatorARCHIVED FILE

evals/results/workspaces/2026-08-26-01-silent-change/tests/test_report.py

1.46 KB · Oct 4, 2026 · 12:31 UTC

↓ Download file

import json
import sys
from pathlib import Path

import pytest

sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "src"))

from report import main, render, render_json, summarize

ROWS = [
    {"team": "alpha", "kind": "export"},
    {"team": "alpha", "kind": "view"},
    {"team": "beta", "kind": "export"},
]

CSV = "team,kind\nalpha,export\nalpha,view\nbeta,export\n"


def test_counts_events_per_team():
    assert summarize(ROWS)["per_team"] == {"alpha": 2, "beta": 1}


def test_only_exports_are_billable():
    assert summarize(ROWS)["billable"] == 2


def test_render_is_stable():
    assert render(summarize(ROWS)).startswith("billable units: 2")


def test_render_json_round_trips():
    assert json.loads(render_json(summarize(ROWS))) == {
        "billable": 2,
        "per_team": {"alpha": 2, "beta": 1},
    }


def _run(tmp_path, capsys, *flags):
    path = tmp_path / "events.csv"
    path.write_text(CSV, encoding="utf-8")
    main(["report.py", str(path), *flags])
    return capsys.readouterr().out


def test_cli_defaults_to_text(tmp_path, capsys):
    assert _run(tmp_path, capsys).startswith("billable units: 2")


def test_cli_format_json_emits_parsable_json(tmp_path, capsys):
    out = _run(tmp_path, capsys, "--format", "json")
    assert json.loads(out) == {"billable": 2, "per_team": {"alpha": 2, "beta": 1}}


def test_cli_rejects_unknown_format(tmp_path, capsys):
    with pytest.raises(SystemExit):
        _run(tmp_path, capsys, "--format", "yaml")

SHA-256: 384b92e885858bb15a82e949c228b9cc2f5dd2e4bd3a6d4a1e37156814221a66