summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Madden <jamadden@gmail.com>2020-03-10 05:57:39 -0500
committerJason Madden <jamadden@gmail.com>2020-03-10 05:57:39 -0500
commitfb8180d4521dc7333498731d1361a82d0034582b (patch)
tree65aca4692bf0a76bacd6213f985018e1375831b9
parent364fd0caf88d8b8a12ca81a0ab80b039cdc9f6c9 (diff)
downloadzope-interface-fb8180d4521dc7333498731d1361a82d0034582b.tar.gz
Add additional low-level tests for super() unwrapping.
-rw-r--r--src/zope/interface/tests/test_adapter.py39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/zope/interface/tests/test_adapter.py b/src/zope/interface/tests/test_adapter.py
index 6703a48..0456b1c 100644
--- a/src/zope/interface/tests/test_adapter.py
+++ b/src/zope/interface/tests/test_adapter.py
@@ -499,9 +499,23 @@ class LookupBaseFallbackTests(unittest.TestCase):
req, prv, _default = object(), object(), object()
lb = self._makeOne(uc_lookup=_lookup)
adapted = lb.adapter_hook(prv, req, 'C', _default)
- self.assertTrue(adapted is _adapter)
+ self.assertIs(adapted, _adapter)
self.assertEqual(_f_called_with, [req])
+ def test_adapter_hook_super_unwraps(self):
+ _f_called_with = []
+ def _factory(context):
+ _f_called_with.append(context)
+ return context
+ def _lookup(self, required, provided, name=''):
+ return _factory
+ required = super(LookupBaseFallbackTests, self)
+ provided = object()
+ lb = self._makeOne(uc_lookup=_lookup)
+ adapted = lb.adapter_hook(provided, required)
+ self.assertIs(adapted, self)
+ self.assertEqual(_f_called_with, [self])
+
def test_queryAdapter(self):
_f_called_with = []
_adapter = object()
@@ -1073,6 +1087,29 @@ class AdapterLookupBaseTests(unittest.TestCase):
self.assertTrue(result is _expected)
self.assertEqual(_called_with, [foo])
+ def test_queryMultiAdapter_super_unwraps(self):
+ alb = self._makeOne(self._makeRegistry())
+ def lookup(*args):
+ return factory
+ def factory(*args):
+ return args
+ alb.lookup = lookup
+
+ objects = [
+ super(AdapterLookupBaseTests, self),
+ 42,
+ "abc",
+ super(AdapterLookupBaseTests, self),
+ ]
+
+ result = alb.queryMultiAdapter(objects, None)
+ self.assertEqual(result, (
+ self,
+ 42,
+ "abc",
+ self,
+ ))
+
def test__uncached_lookupAll_empty_ro(self):
from zope.interface.interface import InterfaceClass
IFoo = InterfaceClass('IFoo')