diff options
author | CaselIT <cfederico87@gmail.com> | 2020-10-19 23:23:08 +0200 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-01-11 23:41:43 -0500 |
commit | 365283aac593698fa483b54554f9443db3fe4933 (patch) | |
tree | 08cfa15232ef2e63b444d506f5750a704f97901e /tests/test_environment.py | |
parent | ebc1ea35b127bd56c48dcae43d226471fd6bf6c0 (diff) | |
download | alembic-365283aac593698fa483b54554f9443db3fe4933.tar.gz |
Accommodate SQLAlchemy 1.4/2.0
To accommodate SQLAlchemy 1.4 and 2.0, the migration model now no longer
assumes that the SQLAlchemy Connection will autocommit an individual
operation. This essentially means that for databases that use
non-transactional DDL (pysqlite current driver behavior, MySQL), there is
still a BEGIN/COMMIT block that will surround each individual migration.
Databases that support transactional DDL should continue to have the
same flow, either per migration or per-entire run, depending on the
value of the :paramref:`.Environment.configure.transaction_per_migration`
flag.
Compatibility is established such that the entire library should
not generate any SQLAlchemy 2.0 deprecation warnings and
SQLALCHEMY_WARN_20 is part of conftest.py. (one warning remains
for the moment that needs to be resolved on the SQLAlchemy side)
The test suite requires SQLAlchemy 1.4.0b2 for testing 1.4;
1.4.0b1 won't work.
Test suite / setup also being modernized, as we are at
SQLAlchemy 1.3 we can now remove the majority of the testing
suite plugin.
Change-Id: If55b1ea3c12ead66405ab3fadc76d15d89dabb90
Diffstat (limited to 'tests/test_environment.py')
-rw-r--r-- | tests/test_environment.py | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/tests/test_environment.py b/tests/test_environment.py index 4fb6bbe..63de6cd 100644 --- a/tests/test_environment.py +++ b/tests/test_environment.py @@ -1,6 +1,7 @@ #!coding: utf-8 from alembic import command from alembic import testing +from alembic import util from alembic.environment import EnvironmentContext from alembic.migration import MigrationContext from alembic.script import ScriptDirectory @@ -11,7 +12,7 @@ from alembic.testing import is_ from alembic.testing import is_false from alembic.testing import is_true from alembic.testing import mock -from alembic.testing.assertions import expect_warnings +from alembic.testing.assertions import expect_raises_message from alembic.testing.env import _no_sql_testing_config from alembic.testing.env import _sqlite_file_db from alembic.testing.env import clear_staging_env @@ -94,10 +95,11 @@ def upgrade(): command.upgrade(self.cfg, "arev", sql=True) assert "do some SQL thing with a % percent sign %" in buf.getvalue() + @config.requirements.legacy_engine @testing.uses_deprecated( r"The Engine.execute\(\) function/method is considered legacy" ) - def test_warning_on_passing_engine(self): + def test_error_on_passing_engine(self): env = self._fixture() engine = _sqlite_file_db() @@ -131,18 +133,15 @@ def downgrade(): migration_fn(rev, context) return env.script._upgrade_revs(a_rev, rev) - with expect_warnings( + with expect_raises_message( + util.CommandError, r"'connection' argument to configure\(\) is " - r"expected to be a sqlalchemy.engine.Connection " + r"expected to be a sqlalchemy.engine.Connection ", ): env.configure( connection=engine, fn=upgrade, transactional_ddl=False ) - env.run_migrations() - - eq_(migration_fn.mock_calls, [mock.call((), env._migration_context)]) - class MigrationTransactionTest(TestBase): __backend__ = True @@ -238,7 +237,7 @@ class MigrationTransactionTest(TestBase): with context.begin_transaction(): is_false(self.conn.in_transaction()) with context.begin_transaction(_per_migration=True): - is_false(self.conn.in_transaction()) + is_true(self.conn.in_transaction()) is_false(self.conn.in_transaction()) is_false(self.conn.in_transaction()) @@ -264,7 +263,7 @@ class MigrationTransactionTest(TestBase): with context.begin_transaction(): is_false(self.conn.in_transaction()) with context.begin_transaction(_per_migration=True): - is_false(self.conn.in_transaction()) + is_true(self.conn.in_transaction()) is_false(self.conn.in_transaction()) is_false(self.conn.in_transaction()) @@ -334,18 +333,12 @@ class MigrationTransactionTest(TestBase): with context.begin_transaction(): is_false(self.conn.in_transaction()) with context.begin_transaction(_per_migration=True): - if context.impl.transactional_ddl: - is_true(self.conn.in_transaction()) - else: - is_false(self.conn.in_transaction()) + is_true(self.conn.in_transaction()) with context.autocommit_block(): is_false(self.conn.in_transaction()) - if context.impl.transactional_ddl: - is_true(self.conn.in_transaction()) - else: - is_false(self.conn.in_transaction()) + is_true(self.conn.in_transaction()) is_false(self.conn.in_transaction()) is_false(self.conn.in_transaction()) |