diff options
| author | Jacob Kaplan-Moss <jacob@jacobian.org> | 2009-05-20 16:13:55 +0000 |
|---|---|---|
| committer | Jacob Kaplan-Moss <jacob@jacobian.org> | 2009-05-20 16:13:55 +0000 |
| commit | c935d7ffe37cf9376aa30cb74c6fdaffe346255f (patch) | |
| tree | 540480b7b2c58502e5b770b274ff58fb35378c9d /tests | |
| parent | ca365b4113b89e269d8a2f731a288cff5be97422 (diff) | |
Fixed #11134: signals recievers that disconnect during their processing no longer mess things up for other handlers. Thanks, Honza Kral.
While I was at it I also cleaned up the formatting of the docstrings a bit.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10831 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/modeltests/signals/tests.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/modeltests/signals/tests.py b/tests/modeltests/signals/tests.py new file mode 100644 index 0000000000..329636c306 --- /dev/null +++ b/tests/modeltests/signals/tests.py @@ -0,0 +1,28 @@ +from django.db.models import signals +from django.test import TestCase +from modeltests.signals.models import Person + +class MyReceiver(object): + def __init__(self, param): + self.param = param + self._run = False + + def __call__(self, signal, sender, **kwargs): + self._run = True + signal.disconnect(receiver=self, sender=sender) + +class SignalTests(TestCase): + def test_disconnect_in_dispatch(self): + """ + Test that signals that disconnect when being called don't mess future + dispatching. + """ + a, b = MyReceiver(1), MyReceiver(2) + signals.post_save.connect(sender=Person, receiver=a) + signals.post_save.connect(sender=Person, receiver=b) + p = Person.objects.create(first_name='John', last_name='Smith') + + self.failUnless(a._run) + self.failUnless(b._run) + self.assertEqual(signals.post_save.receivers, []) + |
