45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from app.config import Settings
|
|
from app.discovery import TaskCatalog
|
|
from app.runner import RunManager
|
|
from app.store import RunStore
|
|
|
|
|
|
@pytest.fixture
|
|
def settings(tmp_path: Path) -> Settings:
|
|
return Settings(
|
|
task_root=tmp_path / "tasks",
|
|
state_root=tmp_path / "state",
|
|
credentials_root=tmp_path / "credentials",
|
|
python_executable=sys.executable,
|
|
timezone_name="Etc/UTC",
|
|
allowed_proxy_ips=frozenset(),
|
|
cancel_grace_seconds=0.1,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def manager(settings: Settings) -> RunManager:
|
|
settings.task_root.mkdir(parents=True)
|
|
store = RunStore(settings.database_path)
|
|
store.initialize()
|
|
return RunManager(settings, TaskCatalog(settings.task_root), store)
|
|
|
|
|
|
def write_task(
|
|
task_root: Path,
|
|
group: str,
|
|
filename: str,
|
|
source: str,
|
|
) -> Path:
|
|
path = task_root / group / filename
|
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
path.write_text(source, encoding="utf-8")
|
|
return path
|