Fixed #10753 -- Fixed regression in dispatcher after [10398]. Thanks for the patch and tests, minmax

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10497 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2009-04-10 18:58:32 +00:00
parent 9e9a2b88e8
commit b366bcc962
2 changed files with 14 additions and 0 deletions

View File

@ -124,6 +124,7 @@ class Signal(object):
(r_key, _) = self.receivers[index] (r_key, _) = self.receivers[index]
if r_key == lookup_key: if r_key == lookup_key:
del self.receivers[index] del self.receivers[index]
break
def send(self, sender, **named): def send(self, sender, **named):
"""Send signal from sender to all connected receivers. """Send signal from sender to all connected receivers.

View File

@ -103,6 +103,19 @@ class DispatcherTests(unittest.TestCase):
a_signal.disconnect(fails) a_signal.disconnect(fails)
self._testIsClean(a_signal) self._testIsClean(a_signal)
def testDisconnection(self):
receiver_1 = Callable()
receiver_2 = Callable()
receiver_3 = Callable()
a_signal.connect(receiver_1)
a_signal.connect(receiver_2)
a_signal.connect(receiver_3)
a_signal.disconnect(receiver_1)
del receiver_2
garbage_collect()
a_signal.disconnect(receiver_3)
self._testIsClean(a_signal)
def getSuite(): def getSuite():
return unittest.makeSuite(DispatcherTests,'test') return unittest.makeSuite(DispatcherTests,'test')