diff options
| author | Adam Johnson <me@adamj.eu> | 2020-05-20 11:04:36 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-07-13 11:56:46 +0200 |
| commit | e906ff6fca291fc0bfa0d52f05817ee9dae0335d (patch) | |
| tree | 23f2d6788f6fb7b95b9bb3809f4c48138910373f /django/test | |
| parent | ca6c5e5fc23f2855a7094d195f09975b21a7ec3f (diff) | |
Fixed #30457 -- Added TestCase.captureOnCommitCallbacks().
Diffstat (limited to 'django/test')
| -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.""" |
