diff options
author | Gord Thompson <gord@gordthompson.com> | 2021-06-08 16:56:39 -0600 |
---|---|---|
committer | Gord Thompson <gord@gordthompson.com> | 2021-06-18 11:08:19 -0600 |
commit | c48373b5ae95a6dc84d4f02404f0b2da54f54a61 (patch) | |
tree | 548dfbb6bdf7a063aea68618871c7e558690325b /tests/test_environment.py | |
parent | 01b5e5fa08c646d3d1f65c731136a1a6a9255315 (diff) | |
download | alembic-c48373b5ae95a6dc84d4f02404f0b2da54f54a61.tar.gz |
Implement "test suite"
Fixes: #855
Change-Id: I11386597d9f3a260d7349b58d276b44d78642a6a
Diffstat (limited to 'tests/test_environment.py')
-rw-r--r-- | tests/test_environment.py | 315 |
1 files changed, 0 insertions, 315 deletions
diff --git a/tests/test_environment.py b/tests/test_environment.py index 23e23b3..d6c3a65 100644 --- a/tests/test_environment.py +++ b/tests/test_environment.py @@ -8,12 +8,9 @@ from alembic import util from alembic.environment import EnvironmentContext from alembic.migration import MigrationContext from alembic.script import ScriptDirectory -from alembic.testing import assert_raises from alembic.testing import config from alembic.testing import eq_ 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_raises_message from alembic.testing.env import _get_staging_directory @@ -25,7 +22,6 @@ from alembic.testing.env import staging_env from alembic.testing.env import write_script from alembic.testing.fixtures import capture_context_buffer from alembic.testing.fixtures import TestBase -from alembic.util import compat class EnvironmentTest(TestBase): @@ -186,314 +182,3 @@ class CWDTest(TestBase): env.configure(url="sqlite://", fn=assert_) with env: script.run_env() - - -class MigrationTransactionTest(TestBase): - __backend__ = True - - conn = None - - def _fixture(self, opts): - self.conn = conn = config.db.connect() - - if opts.get("as_sql", False): - self.context = MigrationContext.configure( - dialect=conn.dialect, opts=opts - ) - self.context.output_buffer = ( - self.context.impl.output_buffer - ) = compat.StringIO() - else: - self.context = MigrationContext.configure( - connection=conn, opts=opts - ) - return self.context - - def teardown(self): - if self.conn: - self.conn.close() - - def test_proxy_transaction_rollback(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": True} - ) - - is_false(self.conn.in_transaction()) - proxy = context.begin_transaction(_per_migration=True) - is_true(self.conn.in_transaction()) - proxy.rollback() - is_false(self.conn.in_transaction()) - - def test_proxy_transaction_commit(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": True} - ) - proxy = context.begin_transaction(_per_migration=True) - is_true(self.conn.in_transaction()) - proxy.commit() - is_false(self.conn.in_transaction()) - - def test_proxy_transaction_contextmanager_commit(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": True} - ) - proxy = context.begin_transaction(_per_migration=True) - is_true(self.conn.in_transaction()) - with proxy: - pass - is_false(self.conn.in_transaction()) - - def test_proxy_transaction_contextmanager_rollback(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": True} - ) - proxy = context.begin_transaction(_per_migration=True) - is_true(self.conn.in_transaction()) - - def go(): - with proxy: - raise Exception("hi") - - assert_raises(Exception, go) - is_false(self.conn.in_transaction()) - - def test_proxy_transaction_contextmanager_explicit_rollback(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": True} - ) - proxy = context.begin_transaction(_per_migration=True) - is_true(self.conn.in_transaction()) - - with proxy: - is_true(self.conn.in_transaction()) - proxy.rollback() - is_false(self.conn.in_transaction()) - - is_false(self.conn.in_transaction()) - - def test_proxy_transaction_contextmanager_explicit_commit(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": True} - ) - proxy = context.begin_transaction(_per_migration=True) - is_true(self.conn.in_transaction()) - - with proxy: - is_true(self.conn.in_transaction()) - proxy.commit() - is_false(self.conn.in_transaction()) - - is_false(self.conn.in_transaction()) - - def test_transaction_per_migration_transactional_ddl(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": True} - ) - - is_false(self.conn.in_transaction()) - - with context.begin_transaction(): - is_false(self.conn.in_transaction()) - with context.begin_transaction(_per_migration=True): - is_true(self.conn.in_transaction()) - - is_false(self.conn.in_transaction()) - is_false(self.conn.in_transaction()) - - def test_transaction_per_migration_non_transactional_ddl(self): - context = self._fixture( - {"transaction_per_migration": True, "transactional_ddl": False} - ) - - is_false(self.conn.in_transaction()) - - with context.begin_transaction(): - is_false(self.conn.in_transaction()) - with context.begin_transaction(_per_migration=True): - is_true(self.conn.in_transaction()) - - is_false(self.conn.in_transaction()) - is_false(self.conn.in_transaction()) - - def test_transaction_per_all_transactional_ddl(self): - context = self._fixture({"transactional_ddl": True}) - - is_false(self.conn.in_transaction()) - - with context.begin_transaction(): - is_true(self.conn.in_transaction()) - with context.begin_transaction(_per_migration=True): - is_true(self.conn.in_transaction()) - - is_true(self.conn.in_transaction()) - is_false(self.conn.in_transaction()) - - def test_transaction_per_all_non_transactional_ddl(self): - context = self._fixture({"transactional_ddl": False}) - - is_false(self.conn.in_transaction()) - - with context.begin_transaction(): - is_false(self.conn.in_transaction()) - with context.begin_transaction(_per_migration=True): - is_true(self.conn.in_transaction()) - - is_false(self.conn.in_transaction()) - is_false(self.conn.in_transaction()) - - def test_transaction_per_all_sqlmode(self): - context = self._fixture({"as_sql": True}) - - context.execute("step 1") - with context.begin_transaction(): - context.execute("step 2") - with context.begin_transaction(_per_migration=True): - context.execute("step 3") - - context.execute("step 4") - context.execute("step 5") - - if context.impl.transactional_ddl: - self._assert_impl_steps( - "step 1", - "BEGIN", - "step 2", - "step 3", - "step 4", - "COMMIT", - "step 5", - ) - else: - self._assert_impl_steps( - "step 1", "step 2", "step 3", "step 4", "step 5" - ) - - def test_transaction_per_migration_sqlmode(self): - context = self._fixture( - {"as_sql": True, "transaction_per_migration": True} - ) - - context.execute("step 1") - with context.begin_transaction(): - context.execute("step 2") - with context.begin_transaction(_per_migration=True): - context.execute("step 3") - - context.execute("step 4") - context.execute("step 5") - - if context.impl.transactional_ddl: - self._assert_impl_steps( - "step 1", - "step 2", - "BEGIN", - "step 3", - "COMMIT", - "step 4", - "step 5", - ) - else: - self._assert_impl_steps( - "step 1", "step 2", "step 3", "step 4", "step 5" - ) - - @config.requirements.autocommit_isolation - def test_autocommit_block(self): - context = self._fixture({"transaction_per_migration": True}) - - is_false(self.conn.in_transaction()) - - with context.begin_transaction(): - is_false(self.conn.in_transaction()) - with context.begin_transaction(_per_migration=True): - is_true(self.conn.in_transaction()) - - with context.autocommit_block(): - is_false(self.conn.in_transaction()) - - is_true(self.conn.in_transaction()) - - is_false(self.conn.in_transaction()) - is_false(self.conn.in_transaction()) - - @config.requirements.autocommit_isolation - def test_autocommit_block_no_transaction(self): - context = self._fixture({"transaction_per_migration": True}) - - is_false(self.conn.in_transaction()) - - with context.autocommit_block(): - is_false(self.conn.in_transaction()) - is_false(self.conn.in_transaction()) - - def test_autocommit_block_transactional_ddl_sqlmode(self): - context = self._fixture( - { - "transaction_per_migration": True, - "transactional_ddl": True, - "as_sql": True, - } - ) - - with context.begin_transaction(): - context.execute("step 1") - with context.begin_transaction(_per_migration=True): - context.execute("step 2") - - with context.autocommit_block(): - context.execute("step 3") - - context.execute("step 4") - - context.execute("step 5") - - self._assert_impl_steps( - "step 1", - "BEGIN", - "step 2", - "COMMIT", - "step 3", - "BEGIN", - "step 4", - "COMMIT", - "step 5", - ) - - def test_autocommit_block_nontransactional_ddl_sqlmode(self): - context = self._fixture( - { - "transaction_per_migration": True, - "transactional_ddl": False, - "as_sql": True, - } - ) - - with context.begin_transaction(): - context.execute("step 1") - with context.begin_transaction(_per_migration=True): - context.execute("step 2") - - with context.autocommit_block(): - context.execute("step 3") - - context.execute("step 4") - - context.execute("step 5") - - self._assert_impl_steps( - "step 1", "step 2", "step 3", "step 4", "step 5" - ) - - def _assert_impl_steps(self, *steps): - to_check = self.context.output_buffer.getvalue() - - self.context.impl.output_buffer = buf = compat.StringIO() - for step in steps: - if step == "BEGIN": - self.context.impl.emit_begin() - elif step == "COMMIT": - self.context.impl.emit_commit() - else: - self.context.impl._exec(step) - - eq_(to_check, buf.getvalue()) |