summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-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."""