diff --git a/odoo/addons/base/tests/test_misc.py b/odoo/addons/base/tests/test_misc.py index 0c25a5e1669..0d139788c67 100644 --- a/odoo/addons/base/tests/test_misc.py +++ b/odoo/addons/base/tests/test_misc.py @@ -321,6 +321,28 @@ class TestCallbacks(BaseCase): callbacks.run() self.assertEqual(log, [[1, 2, 3]]) + def test_reentrant(self): + log = [] + callbacks = misc.Callbacks() + + # register foo that runs callbacks + @callbacks.add + def foo(): + log.append("foo1") + callbacks.run() + log.append("foo2") + + @callbacks.add + def bar(): + log.append("bar") + + # both foo() and bar() are called once + callbacks.run() + self.assertEqual(log, ["foo1", "bar", "foo2"]) + + callbacks.run() + self.assertEqual(log, ["foo1", "bar", "foo2"]) + class TestRemoveAccents(BaseCase): def test_empty_string(self):