diff options
| author | Eugene Morozov <jmv@emorozov.net> | 2021-08-24 23:29:55 +0300 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-08-30 07:06:22 +0200 |
| commit | d89f976bddb49fb168334960acc8979c3de991fa (patch) | |
| tree | 0af9c6e51cb89a7a895566ff9c1ad74567f75f46 /django | |
| parent | 02bc7161ec477afd4a7b328936eb8adac078d7b9 (diff) | |
Fixed #33054 -- Made TestCase.captureOnCommitCallbacks() capture callbacks recursively.
Diffstat (limited to 'django')
| -rw-r--r-- | django/test/testcases.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py index b947d70a45..41d01b89b4 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -1282,11 +1282,18 @@ class TestCase(TransactionTestCase): 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() + callback_count = len(connections[using].run_on_commit) + while True: + 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() + + if callback_count == len(connections[using].run_on_commit): + break + start_count = callback_count - 1 + callback_count = len(connections[using].run_on_commit) class CheckCondition: |
