summaryrefslogtreecommitdiff
path: root/src/zope/interface/tests
diff options
context:
space:
mode:
author‮rekcäH nitraM‮ <spamfaenger@gmx.de>2017-11-28 08:28:40 +0100
committerMichael Howitz <mh@gocept.com>2017-11-28 08:28:40 +0100
commitd50e3d4bed1cecb8b308656ca509824fd379c6cc (patch)
tree6fbe0315870ada80aab4d87066c3ea3c28c7682d /src/zope/interface/tests
parentd9c5d5ea95941bb5cfc1eebd2847159cc1ccdbca (diff)
downloadzope-interface-d50e3d4bed1cecb8b308656ca509824fd379c6cc.tar.gz
Allow Registering and unregistering instance methods as listeners (#102)
* Fixes #12 - registering instance methods as listeners doesn’t allow to easily unregister them as the registry tries to find the handler with 'is' but it should use '==' to allow the python BoundMethod wrapper (which is a new instance every time instance.$methodname is accessed).
Diffstat (limited to 'src/zope/interface/tests')
-rw-r--r--src/zope/interface/tests/test_adapter.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/zope/interface/tests/test_adapter.py b/src/zope/interface/tests/test_adapter.py
index 7420e1c..41c618c 100644
--- a/src/zope/interface/tests/test_adapter.py
+++ b/src/zope/interface/tests/test_adapter.py
@@ -234,6 +234,17 @@ class BaseAdapterRegistryTests(unittest.TestCase):
registry.subscribe([IB1], None, orig)
registry.unsubscribe([IB1], None, nomatch) #doesn't raise
self.assertEqual(len(registry._subscribers), 2)
+
+ def _instance_method_notify_target(self):
+ self.fail("Example method, not intended to be called.")
+
+ def test_unsubscribe_instance_method(self):
+ IB0, IB1, IB2, IB3, IB4, IF0, IF1, IR0, IR1 = _makeInterfaces()
+ registry = self._makeOne()
+ self.assertEqual(len(registry._subscribers), 0)
+ registry.subscribe([IB1], None, self._instance_method_notify_target)
+ registry.unsubscribe([IB1], None, self._instance_method_notify_target)
+ self.assertEqual(len(registry._subscribers), 0)
class LookupBaseFallbackTests(unittest.TestCase):