|
@@ -57,18 +57,22 @@ class DispatcherTests(Case):
|
|
|
|
|
|
def test_exact(self):
|
|
|
a_signal.connect(receiver_1_arg, sender=self)
|
|
|
- expected = [(receiver_1_arg, 'test')]
|
|
|
- result = a_signal.send(sender=self, val='test')
|
|
|
- self.assertEqual(result, expected)
|
|
|
- a_signal.disconnect(receiver_1_arg, sender=self)
|
|
|
+ try:
|
|
|
+ expected = [(receiver_1_arg, 'test')]
|
|
|
+ result = a_signal.send(sender=self, val='test')
|
|
|
+ self.assertEqual(result, expected)
|
|
|
+ finally:
|
|
|
+ a_signal.disconnect(receiver_1_arg, sender=self)
|
|
|
self._testIsClean(a_signal)
|
|
|
|
|
|
def test_ignored_sender(self):
|
|
|
a_signal.connect(receiver_1_arg)
|
|
|
- expected = [(receiver_1_arg, 'test')]
|
|
|
- result = a_signal.send(sender=self, val='test')
|
|
|
- self.assertEqual(result, expected)
|
|
|
- a_signal.disconnect(receiver_1_arg)
|
|
|
+ try:
|
|
|
+ expected = [(receiver_1_arg, 'test')]
|
|
|
+ result = a_signal.send(sender=self, val='test')
|
|
|
+ self.assertEqual(result, expected)
|
|
|
+ finally:
|
|
|
+ a_signal.disconnect(receiver_1_arg)
|
|
|
self._testIsClean(a_signal)
|
|
|
|
|
|
def test_garbage_collected(self):
|
|
@@ -83,19 +87,22 @@ class DispatcherTests(Case):
|
|
|
|
|
|
def test_multiple_registration(self):
|
|
|
a = Callable()
|
|
|
- a_signal.connect(a)
|
|
|
- a_signal.connect(a)
|
|
|
- a_signal.connect(a)
|
|
|
- a_signal.connect(a)
|
|
|
- a_signal.connect(a)
|
|
|
- a_signal.connect(a)
|
|
|
- result = a_signal.send(sender=self, val='test')
|
|
|
- self.assertEqual(len(result), 1)
|
|
|
- self.assertEqual(len(a_signal.receivers), 1)
|
|
|
- del a
|
|
|
- del result
|
|
|
- garbage_collect()
|
|
|
- self._testIsClean(a_signal)
|
|
|
+ result = None
|
|
|
+ try:
|
|
|
+ a_signal.connect(a)
|
|
|
+ a_signal.connect(a)
|
|
|
+ a_signal.connect(a)
|
|
|
+ a_signal.connect(a)
|
|
|
+ a_signal.connect(a)
|
|
|
+ a_signal.connect(a)
|
|
|
+ result = a_signal.send(sender=self, val='test')
|
|
|
+ self.assertEqual(len(result), 1)
|
|
|
+ self.assertEqual(len(a_signal.receivers), 1)
|
|
|
+ finally:
|
|
|
+ del a
|
|
|
+ del result
|
|
|
+ garbage_collect()
|
|
|
+ self._testIsClean(a_signal)
|
|
|
|
|
|
def test_uid_registration(self):
|
|
|
|
|
@@ -106,9 +113,11 @@ class DispatcherTests(Case):
|
|
|
pass
|
|
|
|
|
|
a_signal.connect(uid_based_receiver_1, dispatch_uid='uid')
|
|
|
- a_signal.connect(uid_based_receiver_2, dispatch_uid='uid')
|
|
|
- self.assertEqual(len(a_signal.receivers), 1)
|
|
|
- a_signal.disconnect(dispatch_uid='uid')
|
|
|
+ try:
|
|
|
+ a_signal.connect(uid_based_receiver_2, dispatch_uid='uid')
|
|
|
+ self.assertEqual(len(a_signal.receivers), 1)
|
|
|
+ finally:
|
|
|
+ a_signal.disconnect(dispatch_uid='uid')
|
|
|
self._testIsClean(a_signal)
|
|
|
|
|
|
def test_robust(self):
|
|
@@ -117,22 +126,25 @@ class DispatcherTests(Case):
|
|
|
raise ValueError('this')
|
|
|
|
|
|
a_signal.connect(fails)
|
|
|
- result = a_signal.send_robust(sender=self, val='test')
|
|
|
- err = result[0][1]
|
|
|
- self.assertTrue(isinstance(err, ValueError))
|
|
|
- self.assertEqual(err.args, ('this',))
|
|
|
- a_signal.disconnect(fails)
|
|
|
+ try:
|
|
|
+ a_signal.send(sender=self, val='test')
|
|
|
+ finally:
|
|
|
+ a_signal.disconnect(fails)
|
|
|
self._testIsClean(a_signal)
|
|
|
|
|
|
def test_disconnection(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)
|
|
|
+ try:
|
|
|
+ try:
|
|
|
+ a_signal.connect(receiver_1)
|
|
|
+ a_signal.connect(receiver_2)
|
|
|
+ a_signal.connect(receiver_3)
|
|
|
+ finally:
|
|
|
+ a_signal.disconnect(receiver_1)
|
|
|
+ del receiver_2
|
|
|
+ garbage_collect()
|
|
|
+ finally:
|
|
|
+ a_signal.disconnect(receiver_3)
|
|
|
self._testIsClean(a_signal)
|