From 47da073cb01f86f6f71cf19a2866f80a9755f434 Mon Sep 17 00:00:00 2001 From: Barthelemy Dagenais Date: Tue, 17 May 2016 10:54:57 -0400 Subject: [1.9.x] Fixed #26627 -- Fixed on_commit callbacks execution order when callbacks make transactions. Backport of a5c8072ab1e56da368a40f3e9c9a3b465f4ffbae from master --- tests/transaction_hooks/tests.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'tests') diff --git a/tests/transaction_hooks/tests.py b/tests/transaction_hooks/tests.py index ebf07bc656..000de4104c 100644 --- a/tests/transaction_hooks/tests.py +++ b/tests/transaction_hooks/tests.py @@ -208,6 +208,20 @@ class TestConnectionOnCommit(TransactionTestCase): self.assertDone([1]) + def test_hook_in_hook(self): + def on_commit(i, add_hook): + with transaction.atomic(): + if add_hook: + transaction.on_commit(lambda: on_commit(i + 10, False)) + t = Thing.objects.create(num=i) + self.notify(t.num) + + with transaction.atomic(): + transaction.on_commit(lambda: on_commit(1, True)) + transaction.on_commit(lambda: on_commit(2, True)) + + self.assertDone([1, 11, 2, 12]) + def test_raises_exception_non_autocommit_mode(self): def should_never_be_called(): raise AssertionError('this function should never be called') -- cgit v1.3