zed/crates/eval_cli/zed_eval/tests/test_benchmarks.py
Anant Goel 10f501d700
eval_cli: Add remote benchmark orchestration (#59802)
Summary:

- Add the `zed-eval` Python CLI for Modal/Harbor/Pier benchmark
orchestration, including content-addressed remote builds, run/suite
management, reporting, rejudge, baseline, and cleanup workflows.
- Extend `eval-cli` for remote evals with provider/model overrides and
step/tool-call metrics in `result.json`.
- Add install/source-run helper scripts so `zed-eval` can be installed
or run from the checkout without manually setting `PYTHONPATH`.
- Harden the remote harness wrappers around exit-code preservation,
archive extraction, custom secret wiring, and Harbor/Pier option parity,
with regression coverage.

Testing:

- Using the CLI for two weeks
- `PYTHONPATH=crates/eval_cli python3 -m compileall -q
crates/eval_cli/zed_eval`
- `uv run --project crates/eval_cli/zed_eval python -m unittest discover
-s crates/eval_cli/zed_eval/tests`
- `bash -n crates/eval_cli/script/install-zed-eval
crates/eval_cli/script/zed-eval`
- `cargo check -p eval_cli`
- `cargo fmt --package eval_cli -- --check`
- `cargo test -p eval_cli --no-run`
- `./script/clippy -p eval_cli`

Release Notes:

- N/A
2026-06-24 15:32:41 +00:00

137 lines
5 KiB
Python

from __future__ import annotations
import unittest
from zed_eval import benchmarks, config, harness_command
def make_run_request(benchmark_id: str, **overrides: object) -> dict[str, object]:
benchmark = benchmarks.get_benchmark(benchmark_id)
request: dict[str, object] = {
"run_id": "run-1",
"namespace": "tester",
"experiment_name": benchmark_id,
"benchmark": benchmarks.benchmark_metadata(benchmark),
"volume_name": "agent-evals",
"api_secret_name": "agent-evals-llm-providers",
"build_id": "bld-test",
"agent_model": "anthropic/claude-sonnet-4-6",
"judge_preset": benchmark.default_judge or "leaderboard",
}
request.update(overrides)
return request
def option_values(command: list[str], option: str) -> list[str]:
return [
command[index + 1]
for index, argument in enumerate(command[:-1])
if argument == option
]
class BenchmarkResolutionTests(unittest.TestCase):
def test_group_expands_to_parts(self) -> None:
self.assertEqual(
benchmarks.resolve_benchmarks(["swe-atlas"]),
["swe-atlas-qna", "swe-atlas-rf", "swe-atlas-tw"],
)
def test_aliases_and_dedup(self) -> None:
self.assertEqual(
benchmarks.resolve_benchmarks(["qna", "tb21", "rf,tw"]),
[
"swe-atlas-qna",
"terminal-bench-2.1",
"swe-atlas-rf",
"swe-atlas-tw",
],
)
class HarnessCommandTests(unittest.TestCase):
def test_terminal_bench_is_harbor_registry_no_judge(self) -> None:
command = harness_command.build_harness_command(
make_run_request("terminal-bench-2.1"), "/tmp/jobs"
)
self.assertEqual(command[0], "harbor")
self.assertIn("terminal-bench/terminal-bench-2-1", command)
self.assertIn("-d", command)
# Test-scored benchmarks must not wire up an LLM judge.
self.assertFalse(any(arg.startswith("EVAL_MODEL=") for arg in command))
self.assertNotIn("--verifier-import-path", command)
def test_swe_atlas_rf_wires_judge(self) -> None:
command = harness_command.build_harness_command(
make_run_request("swe-atlas-rf"), "/tmp/jobs"
)
verifier_env = option_values(command, "--ve")
agent_env = option_values(command, "--ae")
self.assertEqual(command[0], "harbor")
self.assertIn("scale-ai/swe-atlas-rf", command)
self.assertIn(
config.JUDGE_PROXY_VERIFIER_IMPORT_PATH,
option_values(command, "--verifier-import-path"),
)
self.assertTrue(any(arg.startswith("EVAL_MODEL=") for arg in verifier_env))
self.assertTrue(
any(arg.startswith("ZED_JUDGE_UPSTREAM=") for arg in verifier_env)
)
self.assertTrue(
any(arg.startswith("ZED_JUDGE_AUTH_ENV=") for arg in verifier_env)
)
self.assertIn("ZED_JUDGE_MAX_TOKENS=8192", verifier_env)
self.assertFalse(any(arg.startswith("ZED_JUDGE_") for arg in agent_env))
def test_deepswe_uses_pier_path_without_cli_allowlist(self) -> None:
command = harness_command.build_harness_command(
make_run_request("deepswe"), "/tmp/jobs"
)
self.assertEqual(command[0], "pier")
self.assertIn("-p", command)
self.assertIn("/tmp/datasets/deepswe/tasks", command)
# Pier uses the Pier-native agent class.
self.assertIn("zed_eval.pier_agent:ZedPierAgent", command)
# The Pier network allowlist is declared by the agent, not the CLI;
# `pier run` has no --agent-allow-host option.
self.assertNotIn("--agent-allow-host", command)
def test_harbor_benchmarks_use_harbor_agent(self) -> None:
command = harness_command.build_harness_command(
make_run_request("swe-atlas-rf"), "/tmp/jobs"
)
self.assertIn("zed_eval.agent:ZedAgent", command)
def test_eval_cli_timeout_override(self) -> None:
command = harness_command.build_harness_command(
make_run_request("swe-atlas-rf", eval_cli_timeout=123), "/tmp/jobs"
)
self.assertIn("EVAL_CLI_TIMEOUT=123", command)
def test_extra_env_is_forwarded_to_harness_agent(self) -> None:
command = harness_command.build_harness_command(
make_run_request(
"swe-atlas-rf",
extra_env={
"ZED_EVAL_INSTRUCTION_SUFFIX_FILE": "/data/prompts/checklist.md"
},
),
"/tmp/jobs",
)
self.assertIn(
"ZED_EVAL_INSTRUCTION_SUFFIX_FILE=/data/prompts/checklist.md",
option_values(command, "--ae"),
)
def test_swe_atlas_tw_uses_path_dataset(self) -> None:
command = harness_command.build_harness_command(
make_run_request("swe-atlas-tw"), "/tmp/jobs"
)
self.assertIn("-p", command)
self.assertIn("/tmp/datasets/swe-atlas-tw/data/tw", command)
if __name__ == "__main__":
unittest.main()