diff options
| author | rekcäH nitraM <spamfaenger@gmx.de> | 2017-11-28 08:28:40 +0100 |
|---|---|---|
| committer | Michael Howitz <mh@gocept.com> | 2017-11-28 08:28:40 +0100 |
| commit | d50e3d4bed1cecb8b308656ca509824fd379c6cc (patch) | |
| tree | 6fbe0315870ada80aab4d87066c3ea3c28c7682d /src/zope/interface/tests | |
| parent | d9c5d5ea95941bb5cfc1eebd2847159cc1ccdbca (diff) | |
| download | zope-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.py | 11 |
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): |
