From: Federico Caselli Date: Mon, 6 Oct 2025 20:20:12 +0000 (+0200) Subject: Adapt test to support 2.1 change on pg compued X-Git-Tag: rel_1_17_0~8^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eebf0610311133825e7194510817fd3b8984454f;p=thirdparty%2Fsqlalchemy%2Falembic.git Adapt test to support 2.1 change on pg compued Fixes: #1734 Change-Id: Ia4222c7c963eb3c50f09ff911bc33a615b329eb7 --- diff --git a/alembic/testing/requirements.py b/alembic/testing/requirements.py index 8b63c16b..7ec026b4 100644 --- a/alembic/testing/requirements.py +++ b/alembic/testing/requirements.py @@ -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() diff --git a/alembic/testing/suite/test_autogen_computed.py b/alembic/testing/suite/test_autogen_computed.py index fe7eb7a5..586691b2 100644 --- a/alembic/testing/suite/test_autogen_computed.py +++ b/alembic/testing/suite/test_autogen_computed.py @@ -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, []) diff --git a/tests/test_postgresql.py b/tests/test_postgresql.py index 476da5f1..c30e1773 100644 --- a/tests/test_postgresql.py +++ b/tests/test_postgresql.py @@ -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 "