From: Mike Bayer Date: Fri, 5 Nov 2021 03:49:15 +0000 (-0400) Subject: rollback connection before teardown X-Git-Tag: rel_1_7_5~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=427fcde8c9b4eb62fa2861093de90c8df2e3f305;p=thirdparty%2Fsqlalchemy%2Falembic.git rollback connection before teardown this test needs to clear out the transaction if running on SQLAlchemy 2.0. Change-Id: Ic3f76433ba9b9ea5485a81caae745d3c7f2a4ee8 --- diff --git a/alembic/testing/fixtures.py b/alembic/testing/fixtures.py index c273665f..5937d485 100644 --- a/alembic/testing/fixtures.py +++ b/alembic/testing/fixtures.py @@ -245,6 +245,7 @@ class AlterColRoundTripFixture: ), "server defaults %r and %r didn't compare as equivalent" % (s1, s2) def tearDown(self): + sqla_compat._safe_rollback_connection_transaction(self.conn) with self.conn.begin(): self.metadata.drop_all(self.conn) self.conn.close() diff --git a/alembic/util/sqla_compat.py b/alembic/util/sqla_compat.py index 21dee892..6f98af4e 100644 --- a/alembic/util/sqla_compat.py +++ b/alembic/util/sqla_compat.py @@ -122,6 +122,14 @@ def _safe_begin_connection_transaction( return connection.begin() +def _safe_rollback_connection_transaction( + connection: "Connection", +) -> "Transaction": + transaction = _get_connection_transaction(connection) + if transaction: + transaction.rollback() + + def _get_connection_in_transaction(connection: Optional["Connection"]) -> bool: try: in_transaction = connection.in_transaction # type: ignore