From 6f9be959c35db26066541c77bed73ae616c1bce1 Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Tue, 19 Mar 2024 10:37:53 +0100
Subject: [PATCH] Add unit test that prevents branching db migrations

---
 test/db/__init__.py        |  0
 test/db/test_migrations.py | 16 ++++++++++++++++
 tox.ini                    |  2 +-
 3 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 test/db/__init__.py
 create mode 100644 test/db/test_migrations.py

diff --git a/test/db/__init__.py b/test/db/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/test/db/test_migrations.py b/test/db/test_migrations.py
new file mode 100644
index 00000000..cdc6790b
--- /dev/null
+++ b/test/db/test_migrations.py
@@ -0,0 +1,16 @@
+import pytest
+from alembic.migration import MigrationContext
+from sqlalchemy import create_engine
+
+
+@pytest.mark.noautofixt()
+def test_migrations_no_branches(db_uri):
+    engine = create_engine(db_uri)
+    conn = engine.connect()
+    context = MigrationContext.configure(conn)
+
+    assert len(context.get_current_heads()) == 1, (
+        "\n\n!!!\n\nDetected a branching of db migrations. This is caused by multiple `down_revision`s referring to the"
+        " same migration.\n\nPlease resolve this by updating either one of these migrations: "
+        f"{context.get_current_heads()}.\n\n!!!\n\n"
+    )
diff --git a/tox.ini b/tox.ini
index 02437f72..de7627e2 100644
--- a/tox.ini
+++ b/tox.ini
@@ -13,7 +13,7 @@ deps =
     -r requirements.txt
 
 commands =
-    ruff --respect-gitignore --preview .
+    ruff check --respect-gitignore --preview .
     ruff format --respect-gitignore --preview --check .
     mypy .
     coverage erase
-- 
GitLab