| import json |
| import zipfile |
|
|
| from arena.harness import main, run_harness |
|
|
|
|
| def test_run_harness_completes_run_and_writes_zip(tmp_path) -> None: |
| result = run_harness( |
| prompt="Build a tiny CLI", |
| criteria=["README explains the project"], |
| user_tests=["test -f README.md"], |
| archive_root=tmp_path / "archives", |
| output_dir=tmp_path / "out", |
| ) |
|
|
| assert result.mode == "swarm" |
| assert result.run.status == "completed" |
| assert result.run.validation_report is not None |
| assert result.run.validation_report.passed is True |
| assert result.zip_path is not None |
|
|
| with zipfile.ZipFile(result.zip_path) as zipped: |
| assert {"README.md", "app.py", "harness_result.json", "pyproject.toml"}.issubset( |
| set(zipped.namelist()) |
| ) |
| payload = json.loads(zipped.read("harness_result.json")) |
|
|
| assert payload["run_id"] == result.run.id |
| assert payload["workspace_dir"] == "/workspace" |
|
|
|
|
| def test_harness_cli_prints_json_summary_and_zip_path(tmp_path, capsys) -> None: |
| exit_code = main([ |
| "--prompt", |
| "Build docs", |
| "--criteria", |
| "docs exist", |
| "--test", |
| "test -f harness_result.json", |
| "--output-dir", |
| str(tmp_path), |
| ]) |
|
|
| captured = capsys.readouterr() |
| payload = json.loads(captured.out) |
|
|
| assert exit_code == 0 |
| assert payload["mode"] == "swarm" |
| assert payload["run"]["status"] == "completed" |
| assert payload["run"]["validation_report"]["passed"] is True |
| assert payload["zip_path"].endswith(".zip") |
|
|