summaryrefslogtreecommitdiff
path: root/tests/test_environment.py
diff options
context:
space:
mode:
authorGord Thompson <gord@gordthompson.com>2021-06-08 16:56:39 -0600
committerGord Thompson <gord@gordthompson.com>2021-06-18 11:08:19 -0600
commitc48373b5ae95a6dc84d4f02404f0b2da54f54a61 (patch)
tree548dfbb6bdf7a063aea68618871c7e558690325b /tests/test_environment.py
parent01b5e5fa08c646d3d1f65c731136a1a6a9255315 (diff)
downloadalembic-c48373b5ae95a6dc84d4f02404f0b2da54f54a61.tar.gz
Implement "test suite"
Fixes: #855 Change-Id: I11386597d9f3a260d7349b58d276b44d78642a6a
Diffstat (limited to 'tests/test_environment.py')
-rw-r--r--tests/test_environment.py315
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())