from __future__ import annotations from pathlib import Path from alembic.config import Config from alembic.script import ScriptDirectory def test_migration_graph_has_unique_revisions_and_one_head() -> None: migrations = Path(__file__).parents[1] / "packages" / "harness" / "deerflow" / "persistence" / "migrations" config = Config() config.set_main_option("script_location", str(migrations)) scripts = ScriptDirectory.from_config(config) revisions = list(scripts.walk_revisions()) assert len({revision.revision for revision in revisions}) == len(revisions) assert scripts.get_heads() == ["20261102_02"] assert scripts.get_revision("20261026_02").down_revision == ("20261026_01", "20261022_01") assert scripts.get_revision("20261026_01").down_revision == "20261025_03" assert scripts.get_revision("20261023_03").down_revision == "20261023_02" assert scripts.get_revision("20261023_02").down_revision == ( "20261024_02", "20261022_02", ) assert scripts.get_revision("20261024_02").down_revision == "20261024_01" assert scripts.get_revision("20261022_02").down_revision == "20261024_01" assert scripts.get_revision("20261024_01").down_revision == "20261023_01" assert scripts.get_revision("20261023_01").down_revision == "20261022_03" assert scripts.get_revision("20261022_03").down_revision == "20261021_01" assert scripts.get_revision("20261022_01").down_revision == "20261014_02" assert scripts.get_revision("20261021_01").down_revision == "20261020_01" assert scripts.get_revision("20261020_01").down_revision == ( "20261019_01", "20261014_02", ) assert scripts.get_revision("20261019_01").down_revision == "20261015_01" assert scripts.get_revision("20261014_02").down_revision == "20261014_01" assert scripts.get_revision("20261014_01").down_revision == "20261009_01" assert scripts.get_revision("20261009_01").down_revision == "20261006_01" assert scripts.get_revision("20260916_02").down_revision == "20260916_01" assert scripts.get_revision("20260916_03").down_revision == ( "20260916_02", "20260909_01", "20260914_01", ) assert scripts.get_revision("20260920_02").down_revision == ( "20260920_01", "20260916_03", ) assert scripts.get_revision("20261015_01").down_revision == "20260920_02"