AgentEvalTool/tests/unit/test_production_entrypoint.py

42 lines
1.3 KiB
Python

import os
import sqlite3
import subprocess
import sys
from pathlib import Path
def _write_executable(path: Path, content: str) -> None:
path.write_text(content)
path.chmod(0o755)
def test_legacy_database_starts_migrations_from_pre_alembic_baseline(tmp_path: Path) -> None:
database_path = tmp_path / "legacy.db"
connection = sqlite3.connect(database_path)
connection.execute("CREATE TABLE scenarios (id TEXT PRIMARY KEY, name TEXT NOT NULL)")
connection.close()
command_log = tmp_path / "commands.log"
bin_dir = tmp_path / "bin"
bin_dir.mkdir()
recorder = '#!/bin/sh\nprintf "%s\\n" "$*" >> "$COMMAND_LOG"\n'
_write_executable(bin_dir / "alembic", recorder)
_write_executable(bin_dir / "agenteval", recorder)
_write_executable(bin_dir / "python", f'#!/bin/sh\nexec "{sys.executable}" "$@"\n')
environment = {
**os.environ,
"AGENTEVAL_DB_PATH": str(database_path),
"COMMAND_LOG": str(command_log),
"PATH": f"{bin_dir}:{os.environ['PATH']}",
}
script = Path(__file__).resolve().parents[2] / "scripts" / "production-entrypoint.sh"
subprocess.run(["sh", str(script)], check=True, env=environment)
assert command_log.read_text().splitlines() == [
"stamp base",
"upgrade head",
"server start --host 0.0.0.0 --port 8000",
]