]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Adapt test to support 2.1 change on pg compued
authorFederico Caselli <cfederico87@gmail.com>
Mon, 6 Oct 2025 20:20:12 +0000 (22:20 +0200)
committerFederico Caselli <cfederico87@gmail.com>
Mon, 6 Oct 2025 20:20:12 +0000 (22:20 +0200)
Fixes: #1734
Change-Id: Ia4222c7c963eb3c50f09ff911bc33a615b329eb7

alembic/testing/requirements.py
alembic/testing/suite/test_autogen_computed.py
tests/test_postgresql.py

index 8b63c16ba387812357a556505c2a535f84021307..7ec026b4955c18719f17d2b5ab295cc03d3b9011 100644 (file)
@@ -113,6 +113,15 @@ class SuiteRequirements(Requirements):
     def computed_columns(self):
         return exclusions.closed()
 
+    @property
+    def computed_columns_warn_no_persisted(self):
+        def go(config):
+            return hasattr(
+                config.db.dialect, "supports_virtual_generated_columns"
+            )
+
+        return exclusions.only_if("postgresql<18") + exclusions.only_if(go)
+
     @property
     def autoincrement_on_composite_pk(self):
         return exclusions.closed()
index fe7eb7a568cdb8e4269c392e3c94d5ffdc78771e..586691b2654af4fa2cb11bd4e8fd9061410166cb 100644 (file)
@@ -1,3 +1,5 @@
+from contextlib import nullcontext
+
 import sqlalchemy as sa
 from sqlalchemy import Column
 from sqlalchemy import Integer
@@ -6,7 +8,9 @@ from sqlalchemy import Table
 
 from ._autogen_fixtures import AutogenFixtureTest
 from ... import testing
+from ...testing import config
 from ...testing import eq_
+from ...testing import expect_warnings
 from ...testing import is_
 from ...testing import is_true
 from ...testing import mock
@@ -17,6 +21,13 @@ class AutogenerateComputedTest(AutogenFixtureTest, TestBase):
     __requires__ = ("computed_columns",)
     __backend__ = True
 
+    def _fixture_ctx(self):
+        if config.requirements.computed_columns_warn_no_persisted.enabled:
+            ctx = expect_warnings()
+        else:
+            ctx = nullcontext()
+        return ctx
+
     def test_add_computed_column(self):
         m1 = MetaData()
         m2 = MetaData()
@@ -30,7 +41,8 @@ class AutogenerateComputedTest(AutogenFixtureTest, TestBase):
             Column("foo", Integer, sa.Computed("5")),
         )
 
-        diffs = self._fixture(m1, m2)
+        with self._fixture_ctx():
+            diffs = self._fixture(m1, m2)
 
         eq_(diffs[0][0], "add_column")
         eq_(diffs[0][2], "user")
@@ -54,7 +66,8 @@ class AutogenerateComputedTest(AutogenFixtureTest, TestBase):
 
         Table("user", m2, Column("id", Integer, primary_key=True))
 
-        diffs = self._fixture(m1, m2)
+        with self._fixture_ctx():
+            diffs = self._fixture(m1, m2)
 
         eq_(diffs[0][0], "remove_column")
         eq_(diffs[0][2], "user")
@@ -97,7 +110,7 @@ class AutogenerateComputedTest(AutogenFixtureTest, TestBase):
             Column("foo", Integer, *arg_after),
         )
 
-        with mock.patch("alembic.util.warn") as mock_warn:
+        with mock.patch("alembic.util.warn") as mock_warn, self._fixture_ctx():
             diffs = self._fixture(m1, m2)
 
         eq_(
@@ -137,7 +150,7 @@ class AutogenerateComputedTest(AutogenFixtureTest, TestBase):
             Column("foo", Integer, *arg_after),
         )
 
-        with mock.patch("alembic.util.warn") as mock_warn:
+        with mock.patch("alembic.util.warn") as mock_warn, self._fixture_ctx():
             diffs = self._fixture(m1, m2)
         eq_(mock_warn.mock_calls, [])
 
index 476da5f15ed804df75049445c804783bac40a807..c30e177305ec341b4a1114f658a7b0cf3b760fb8 100644 (file)
@@ -352,7 +352,9 @@ class PostgresqlOpTest(TestBase):
         context = op_fixture("postgresql")
         op.add_column(
             "t1",
-            Column("some_column", Integer, Computed("foo * 5")),
+            Column(
+                "some_column", Integer, Computed("foo * 5", persisted=True)
+            ),
         )
         context.assert_(
             "ALTER TABLE t1 ADD COLUMN some_column "