summaryrefslogtreecommitdiff
path: root/django/test
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2020-05-20 11:04:36 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-07-13 11:56:46 +0200
commite906ff6fca291fc0bfa0d52f05817ee9dae0335d (patch)
tree23f2d6788f6fb7b95b9bb3809f4c48138910373f /django/test
parentca6c5e5fc23f2855a7094d195f09975b21a7ec3f (diff)
Fixed #30457 -- Added TestCase.captureOnCommitCallbacks().
Diffstat (limited to 'django/test')
-rw-r--r--django/test/testcases.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 5787dc0115..5c9a5262b8 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1229,6 +1229,21 @@ class TestCase(TransactionTestCase):
not connection.needs_rollback and connection.is_usable()
)
+ @classmethod
+ @contextmanager
+ def captureOnCommitCallbacks(cls, *, using=DEFAULT_DB_ALIAS, execute=False):
+ """Context manager to capture transaction.on_commit() callbacks."""
+ callbacks = []
+ start_count = len(connections[using].run_on_commit)
+ try:
+ yield callbacks
+ finally:
+ run_on_commit = connections[using].run_on_commit[start_count:]
+ callbacks[:] = [func for sids, func in run_on_commit]
+ if execute:
+ for callback in callbacks:
+ callback()
+
class CheckCondition:
"""Descriptor class for deferred condition checking."""