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