diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/test/testcases.py | 15 |
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.""" |
