Files
docker-images/python-tools/tests/test_store.py
T
2026-08-08 18:39:09 +00:00

60 lines
1.7 KiB
Python

from __future__ import annotations
import sqlite3
from app.store import RunStore
def test_restart_marks_unfinished_runs_interrupted(settings) -> None:
store = RunStore(settings.database_path)
store.initialize()
run, created = store.enqueue(
target_kind="task",
target_path="checks/status.py",
queue_group="checks",
)
assert created is True
store.mark_interrupted()
interrupted = store.get(run.id)
assert interrupted is not None
assert interrupted.status == "interrupted"
assert interrupted.finished_at is not None
def test_initialize_migrates_existing_database_with_input_column(settings) -> None:
settings.state_root.mkdir()
with sqlite3.connect(settings.database_path) as connection:
connection.execute(
"""
CREATE TABLE runs (
id INTEGER PRIMARY KEY,
target_kind TEXT NOT NULL,
target_path TEXT NOT NULL,
queue_group TEXT NOT NULL,
trigger TEXT NOT NULL,
status TEXT NOT NULL,
created_at TEXT NOT NULL,
started_at TEXT,
finished_at TEXT,
exit_code INTEGER,
cancel_requested_at TEXT,
parent_run_id INTEGER,
log_path TEXT,
message TEXT
)
"""
)
store = RunStore(settings.database_path)
store.initialize()
run, _ = store.enqueue(
target_kind="task",
target_path="checks/status.py",
queue_group="checks",
input_data={"attempts": 2},
)
assert run.input_json == '{"attempts":2}'