Files
tkmind_go/evals/harbor/tests/test_runner.py
T
2026-05-20 20:03:01 +00:00

146 lines
4.1 KiB
Python

from __future__ import annotations
import json
from pathlib import Path
import pytest
from goose_harbor import runner
@pytest.fixture(autouse=True)
def clear_package_index_env(monkeypatch: pytest.MonkeyPatch) -> None:
for key in ("UV_DEFAULT_INDEX", "PIP_INDEX_URL", "UV_INDEX_URL"):
monkeypatch.delenv(key, raising=False)
def test_dry_run_writes_config_without_running_harbor(tmp_path: Path) -> None:
goose_binary = tmp_path / "goose"
goose_binary.write_text("#!/bin/sh\n")
goose_profile = tmp_path / "goose-profile"
goose_profile.mkdir()
config_dir = tmp_path / "configs"
result = runner.main(
[
"--goose-binary",
str(goose_binary),
"--goose-profile",
str(goose_profile),
"--dataset",
"terminal-bench/terminal-bench-2",
"--model",
"databricks/model",
"--task",
"terminal-bench/fix-git",
"--install-goose-runtime-deps",
"--config-dir",
str(config_dir),
"--dry-run",
]
)
assert result == 0
config_path = next(config_dir.glob("*.json"))
config = json.loads(config_path.read_text())
assert config["datasets"] == [
{
"name": "terminal-bench/terminal-bench-2",
"task_names": ["terminal-bench/fix-git"],
}
]
assert config["agents"][0]["kwargs"]["install_goose_runtime_deps"] is True
def test_package_dataset_suffix_uses_ref(tmp_path: Path) -> None:
goose_binary = tmp_path / "goose"
goose_binary.write_text("#!/bin/sh\n")
goose_profile = tmp_path / "goose-profile"
goose_profile.mkdir()
config_dir = tmp_path / "configs"
result = runner.main(
[
"--goose-binary",
str(goose_binary),
"--goose-profile",
str(goose_profile),
"--dataset",
"terminal-bench/terminal-bench-2@v1",
"--model",
"databricks/model",
"--config-dir",
str(config_dir),
"--dry-run",
]
)
assert result == 0
config = json.loads(next(config_dir.glob("*.json")).read_text())
assert config["datasets"] == [
{"name": "terminal-bench/terminal-bench-2", "ref": "v1"}
]
def test_registry_dataset_suffix_uses_version(tmp_path: Path) -> None:
goose_binary = tmp_path / "goose"
goose_binary.write_text("#!/bin/sh\n")
goose_profile = tmp_path / "goose-profile"
goose_profile.mkdir()
config_dir = tmp_path / "configs"
result = runner.main(
[
"--goose-binary",
str(goose_binary),
"--goose-profile",
str(goose_profile),
"--dataset",
"terminal-bench@2.0",
"--model",
"databricks/model",
"--config-dir",
str(config_dir),
"--dry-run",
]
)
assert result == 0
config = json.loads(next(config_dir.glob("*.json")).read_text())
assert config["datasets"] == [{"name": "terminal-bench", "version": "2.0"}]
def test_dry_run_accepts_unexpanded_home_paths(
tmp_path: Path,
monkeypatch: pytest.MonkeyPatch,
) -> None:
home = tmp_path / "home"
goose_binary = home / "bin" / "goose"
goose_binary.parent.mkdir(parents=True)
goose_binary.write_text("#!/bin/sh\n")
goose_profile = home / "goose-profile"
goose_profile.mkdir()
config_dir = tmp_path / "configs"
monkeypatch.setenv("HOME", str(home))
result = runner.main(
[
"--goose-binary",
"~/bin/goose",
"--goose-profile",
"~/goose-profile",
"--dataset",
"terminal-bench/terminal-bench-2",
"--model",
"databricks/model",
"--config-dir",
str(config_dir),
"--dry-run",
]
)
assert result == 0
config = json.loads(next(config_dir.glob("*.json")).read_text())
assert config["agents"][0]["kwargs"]["goose_binary"] == str(goose_binary)
assert config["agents"][0]["kwargs"]["goose_profile"] == str(goose_profile)