@@ -252,26 +252,28 @@ def _execute_on_commit_callbacks_in_tests(using: str | None = None) -> Generator
252252 https://github.com/django/django/blob/stable/4.2.x/django/db/backends/base/base.py#L762-L779
253253 """
254254 only_in_testcase_transaction = _innermost_atomic_block_wraps_testcase (using = using )
255+ if not only_in_testcase_transaction :
256+ yield
257+ return
255258
256- if (
257- getattr (
258- settings , "SUBATOMIC_CATCH_UNHANDLED_AFTER_COMMIT_CALLBACKS_IN_TESTS" , True
259- )
260- and only_in_testcase_transaction
261- ):
262- connection = django_transaction .get_connection (using )
259+ raise_unhandled_callbacks = getattr (
260+ settings , "SUBATOMIC_CATCH_UNHANDLED_AFTER_COMMIT_CALLBACKS_IN_TESTS" , True
261+ )
262+ # See Note [Running after-commit callbacks in tests]
263+ run_callbacks = getattr (
264+ settings , "SUBATOMIC_RUN_AFTER_COMMIT_CALLBACKS_IN_TESTS" , True
265+ )
266+
267+ connection = django_transaction .get_connection (using )
268+
269+ if raise_unhandled_callbacks :
263270 callbacks = connection .run_on_commit
264271 if callbacks :
265272 raise _UnhandledCallbacks (tuple (callback for _ , callback , _ in callbacks ))
266273
267274 yield
268275
269- if (
270- # See Note [Running after-commit callbacks in tests]
271- getattr (settings , "SUBATOMIC_RUN_AFTER_COMMIT_CALLBACKS_IN_TESTS" , True )
272- and only_in_testcase_transaction
273- ):
274- connection = django_transaction .get_connection (using )
276+ if run_callbacks :
275277 callbacks = connection .run_on_commit
276278 connection .run_on_commit = []
277279 for _ , callback , robust in callbacks :
0 commit comments