summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/assertions.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2020-05-14 12:50:11 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2020-05-17 16:32:22 -0400
commit0e53221eef50b3274841fbd1eb41e32f5dfc4e69 (patch)
treee1c13d067b0db5e0aeee8b934dc0f934154ef9f3 /lib/sqlalchemy/testing/assertions.py
parent79de84b25e87bbb7fa94f0dd513b4abc76e05a7e (diff)
downloadsqlalchemy-0e53221eef50b3274841fbd1eb41e32f5dfc4e69.tar.gz
Update transaction / connection handling
step one, do away with __connection attribute and using awkward AttributeError logic step two, move all management of "connection._transaction" into the transaction objects themselves where it's easier to follow. build MarkerTransaction that takes the role of "do-nothing block" new connection datamodel is: connection._transaction, always a root, connection._nested_transaction, always a nested. nested transactions still chain to each other as this is still sort of necessary but they consider the root transaction separately, and the marker transactions not at all. introduce new InvalidRequestError subclass PendingRollbackError. Apply to connection and session for all cases where a transaction needs to be rolled back before continuing. Within Connection, both PendingRollbackError as well as ResourceClosedError are now raised directly without being handled by handle_dbapi_error(); this removes these two exception cases from the handle_error event handler as well as from StatementError wrapping, as these two exceptions are not statement oriented and are instead programmatic issues, that the application is failing to handle database errors properly. Revise savepoints so that when a release fails, they set themselves as inactive so that their rollback() method does not throw another exception. Give savepoints another go on MySQL, can't get release working however get support for basic round trip going Fixes: #5327 Change-Id: Ia3cbbf56d4882fcc7980f90519412f1711fae74d
Diffstat (limited to 'lib/sqlalchemy/testing/assertions.py')
-rw-r--r--lib/sqlalchemy/testing/assertions.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/sqlalchemy/testing/assertions.py b/lib/sqlalchemy/testing/assertions.py
index 05dcf230b..87e5ba0d2 100644
--- a/lib/sqlalchemy/testing/assertions.py
+++ b/lib/sqlalchemy/testing/assertions.py
@@ -285,13 +285,11 @@ def _assert_proper_exception_context(exception):
def assert_raises(except_cls, callable_, *args, **kw):
- _assert_raises(except_cls, callable_, args, kw, check_context=True)
+ return _assert_raises(except_cls, callable_, args, kw, check_context=True)
def assert_raises_context_ok(except_cls, callable_, *args, **kw):
- _assert_raises(
- except_cls, callable_, args, kw,
- )
+ return _assert_raises(except_cls, callable_, args, kw,)
def assert_raises_return(except_cls, callable_, *args, **kw):
@@ -299,7 +297,7 @@ def assert_raises_return(except_cls, callable_, *args, **kw):
def assert_raises_message(except_cls, msg, callable_, *args, **kwargs):
- _assert_raises(
+ return _assert_raises(
except_cls, callable_, args, kwargs, msg=msg, check_context=True
)
@@ -307,7 +305,7 @@ def assert_raises_message(except_cls, msg, callable_, *args, **kwargs):
def assert_raises_message_context_ok(
except_cls, msg, callable_, *args, **kwargs
):
- _assert_raises(except_cls, callable_, args, kwargs, msg=msg)
+ return _assert_raises(except_cls, callable_, args, kwargs, msg=msg)
def _assert_raises(