dotb_ai-platform/tests/test_migration_heads.py

29 lines
1.1 KiB
Python

from pathlib import Path
import pytest
from alembic.config import Config
from alembic.script import ScriptDirectory
from ai_platform.bootstrap.app import _current_migration_heads, validate_migration_heads
def test_startup_migration_heads_come_from_alembic_metadata():
project_root = Path(__file__).resolve().parents[1]
config = Config(str(project_root / "alembic.ini"))
config.set_main_option("path_separator", "os")
config.set_main_option("script_location", str(project_root / "migrations"))
expected_heads = frozenset(ScriptDirectory.from_config(config).get_heads())
assert _current_migration_heads() == expected_heads
validate_migration_heads(expected_heads)
def test_startup_rejects_missing_applied_migration_heads():
with pytest.raises(RuntimeError, match="migrations are missing or not at head"):
validate_migration_heads(frozenset())
def test_startup_rejects_stale_applied_migration_heads():
with pytest.raises(RuntimeError, match="migrations are missing or not at head"):
validate_migration_heads({"stale-head"})