[Checkins] SVN: zope.component/tseaver-test_cleanup/ Split out tests for z.c._api and z.c.globalregistry.
Tres Seaver
cvs-admin at zope.org
Fri Jun 22 17:08:00 UTC 2012
Log message for revision 127019:
Split out tests for z.c._api and z.c.globalregistry.
Changed:
_U zope.component/tseaver-test_cleanup/
U zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py
A zope.component/tseaver-test_cleanup/src/zope/component/tests/test__api.py
A zope.component/tseaver-test_cleanup/src/zope/component/tests/test_globalregistry.py
-=-
Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py 2012-06-22 15:28:01 UTC (rev 127018)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py 2012-06-22 17:07:56 UTC (rev 127019)
@@ -14,10 +14,8 @@
import unittest
-class PackageAPITests(unittest.TestCase):
+class Test_package(unittest.TestCase):
- from zope.component.testing import setUp, tearDown
-
def test_module_conforms_to_IComponentArchitecture(self):
from zope.interface.verify import verifyObject
from zope.component.interfaces import IComponentArchitecture
@@ -30,888 +28,9 @@
import zope.component as zc
verifyObject(IComponentRegistrationConvenience, zc)
- def test_getGlobalSiteManager(self):
- from zope.component.globalregistry import base
- from zope.component.interfaces import IComponentLookup
- from zope.component import getGlobalSiteManager
- gsm = getGlobalSiteManager()
- self.assertTrue(gsm is base)
- self.assertTrue(IComponentLookup.providedBy(gsm))
- self.assertTrue(getGlobalSiteManager() is gsm)
- def test_getGlobalSiteManager_pickling(self):
- import cPickle
- from zope.component import getGlobalSiteManager
- gsm = getGlobalSiteManager()
- dumped = cPickle.dumps(gsm)
- loaded = cPickle.loads(dumped)
- self.assertTrue(loaded is gsm)
- dumped_utilities = cPickle.dumps(gsm.utilities)
- loaded_utilities = cPickle.loads(dumped_utilities)
- self.assertTrue(loaded_utilities is gsm.utilities)
-
- dumped_adapters = cPickle.dumps(gsm.adapters)
- loaded_adapters = cPickle.loads(dumped_adapters)
- self.assertTrue(loaded_adapters is gsm.adapters)
-
- def test_getSiteManager_no_args(self):
- from zope.component.globalregistry import base
- from zope.component.interfaces import IComponentLookup
- from zope.component import getSiteManager
- sm = getSiteManager()
- self.assertTrue(sm is base)
- self.assertTrue(IComponentLookup.providedBy(sm))
- self.assertTrue(getSiteManager() is sm)
-
- def test_getSiteManager_w_None(self):
- from zope.component import getSiteManager
- self.assertTrue(getSiteManager(None) is getSiteManager())
-
- def test_getSiteManager_w_conforming_context(self):
- from zope.component import getSiteManager
- from zope.component.tests.examples import ConformsToIComponentLookup
- sitemanager = object()
- context = ConformsToIComponentLookup(sitemanager)
- self.assertTrue(getSiteManager(context) is sitemanager)
-
- def test_getSiteManager_w_invalid_context(self):
- from zope.component import getSiteManager
- from zope.component.interfaces import ComponentLookupError
- self.assertRaises(ComponentLookupError, getSiteManager, object())
-
- def test_getUtility_anonymous_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getUtility
- from zope.component.interfaces import ComponentLookupError
- class IFoo(Interface):
- pass
- self.assertRaises(ComponentLookupError, getUtility, IFoo)
-
- def test_getUtility_named_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getUtility
- from zope.component.interfaces import ComponentLookupError
- class IFoo(Interface):
- pass
- self.assertRaises(ComponentLookupError, getUtility, IFoo, name='bar')
-
- def test_getUtility_anonymous_hit(self):
- from zope.interface import Interface
- from zope.component import getGlobalSiteManager
- from zope.component import getUtility
- class IFoo(Interface):
- pass
- obj = object()
- getGlobalSiteManager().registerUtility(obj, IFoo)
- self.assertTrue(getUtility(IFoo) is obj)
-
- def test_getUtility_named_hit(self):
- from zope.interface import Interface
- from zope.component import getUtility
- from zope.component import getGlobalSiteManager
- class IFoo(Interface):
- pass
- obj = object()
- getGlobalSiteManager().registerUtility(obj, IFoo, name='bar')
- self.assertTrue(getUtility(IFoo, name='bar') is obj)
-
- def test_getUtility_w_conforming_context(self):
- from zope.interface import Interface
- from zope.component import getGlobalSiteManager
- from zope.component import getUtility
- from zope.component.tests.examples import ConformsToIComponentLookup
- class SM(object):
- def __init__(self, obj):
- self._obj = obj
- def queryUtility(self, interface, name, default):
- return self._obj
- class IFoo(Interface):
- pass
- obj1 = object()
- obj2 = object()
- sm = SM(obj2)
- context = ConformsToIComponentLookup(sm)
- getGlobalSiteManager().registerUtility(obj1, IFoo)
- self.assertTrue(getUtility(IFoo, context=context) is obj2)
-
- def test_queryUtility_anonymous_nonesuch(self):
- from zope.interface import Interface
- from zope.component import queryUtility
- class IFoo(Interface):
- pass
- self.assertEqual(queryUtility(IFoo), None)
-
- def test_queryUtility_anonymous_nonesuch_w_default(self):
- from zope.interface import Interface
- from zope.component import queryUtility
- class IFoo(Interface):
- pass
- obj = object()
- self.assertTrue(queryUtility(IFoo, default=obj) is obj)
-
- def test_queryUtility_named_nonesuch(self):
- from zope.interface import Interface
- from zope.component import queryUtility
- class IFoo(Interface):
- pass
- self.assertEqual(queryUtility(IFoo, name='bar'), None)
-
- def test_queryUtility_named_nonesuch_w_default(self):
- from zope.interface import Interface
- from zope.component import queryUtility
- class IFoo(Interface):
- pass
- obj = object()
- self.assertTrue(queryUtility(IFoo, name='bar', default=obj) is obj)
-
- def test_queryUtility_anonymous_hit(self):
- from zope.interface import Interface
- from zope.component import getGlobalSiteManager
- from zope.component import queryUtility
- class IFoo(Interface):
- pass
- obj = object()
- getGlobalSiteManager().registerUtility(obj, IFoo)
- self.assertTrue(queryUtility(IFoo) is obj)
-
- def test_queryUtility_named_hit(self):
- from zope.interface import Interface
- from zope.component import queryUtility
- from zope.component import getGlobalSiteManager
- class IFoo(Interface):
- pass
- obj = object()
- getGlobalSiteManager().registerUtility(obj, IFoo, name='bar')
- self.assertTrue(queryUtility(IFoo, name='bar') is obj)
-
- def test_queryUtility_w_conforming_context(self):
- from zope.interface import Interface
- from zope.component import getGlobalSiteManager
- from zope.component import queryUtility
- from zope.component.tests.examples import ConformsToIComponentLookup
- class SM(object):
- def __init__(self, obj):
- self._obj = obj
- def queryUtility(self, interface, name, default):
- return self._obj
- class IFoo(Interface):
- pass
- obj1 = object()
- obj2 = object()
- sm = SM(obj2)
- context = ConformsToIComponentLookup(sm)
- getGlobalSiteManager().registerUtility(obj1, IFoo)
- self.assertTrue(queryUtility(IFoo, context=context) is obj2)
-
- def test_getUtilitiesFor_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getUtilitiesFor
- class IFoo(Interface):
- pass
- self.assertEqual(list(getUtilitiesFor(IFoo)), [])
-
- def test_getUtilitiesFor_hit(self):
- from zope.interface import Interface
- from zope.component import getGlobalSiteManager
- from zope.component import getUtilitiesFor
- class IFoo(Interface):
- pass
- obj = object()
- obj1 = object()
- getGlobalSiteManager().registerUtility(obj, IFoo)
- getGlobalSiteManager().registerUtility(obj1, IFoo, name='bar')
- tuples = list(getUtilitiesFor(IFoo))
- self.assertEqual(len(tuples), 2)
- self.assertTrue(('', obj) in tuples)
- self.assertTrue(('bar', obj1) in tuples)
-
- def test_getAllUtilitiesRegisteredFor_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getAllUtilitiesRegisteredFor
- class IFoo(Interface):
- pass
- self.assertEqual(list(getAllUtilitiesRegisteredFor(IFoo)), [])
-
- def test_getAllUtilitiesRegisteredFor_hit(self):
- from zope.interface import Interface
- from zope.component import getGlobalSiteManager
- from zope.component import getAllUtilitiesRegisteredFor
- class IFoo(Interface):
- pass
- class IBar(IFoo):
- pass
- obj = object()
- obj1 = object()
- obj2 = object()
- getGlobalSiteManager().registerUtility(obj, IFoo)
- getGlobalSiteManager().registerUtility(obj1, IFoo, name='bar')
- getGlobalSiteManager().registerUtility(obj2, IBar)
- uts = list(getAllUtilitiesRegisteredFor(IFoo))
- self.assertEqual(len(uts), 3)
- self.assertTrue(obj in uts)
- self.assertTrue(obj1 in uts)
- self.assertTrue(obj2 in uts)
-
- def test_getNextUtility_global(self):
- from zope.component import getGlobalSiteManager
- from zope.component import getNextUtility
- from zope.component.interface import ComponentLookupError
- gsm = getGlobalSiteManager()
- gutil = _makeMyUtility('global', gsm)
- gsm.registerUtility(gutil, IMyUtility, 'myutil')
- self.assertRaises(ComponentLookupError,
- getNextUtility, gutil, IMyUtility, 'myutil')
-
- def test_queryNextUtility_global(self):
- from zope.component import getGlobalSiteManager
- from zope.component import queryNextUtility
- gsm = getGlobalSiteManager()
- gutil = _makeMyUtility('global', gsm)
- gsm.registerUtility(gutil, IMyUtility, 'myutil')
- self.assertEqual(queryNextUtility(gutil, IMyUtility, 'myutil'), None)
-
- def test_getNextUtility_nested(self):
- from zope.component import getGlobalSiteManager
- from zope.component import getNextUtility
- from zope.component.interfaces import IComponentLookup
- from zope.interface.registry import Components
- gsm = getGlobalSiteManager()
- gutil = _makeMyUtility('global', gsm)
- gsm.registerUtility(gutil, IMyUtility, 'myutil')
- sm1 = Components('sm1', bases=(gsm, ))
- sm1_1 = Components('sm1_1', bases=(sm1, ))
- util1 = _makeMyUtility('one', sm1)
- sm1.registerUtility(util1, IMyUtility, 'myutil')
- self.assertTrue(IComponentLookup(util1) is sm1)
- self.assertTrue(getNextUtility(util1, IMyUtility, 'myutil') is gutil)
- util1_1 = _makeMyUtility('one-one', sm1_1)
- sm1_1.registerUtility(util1_1, IMyUtility, 'myutil')
- self.assertTrue(IComponentLookup(util1_1) is sm1_1)
- self.assertTrue(getNextUtility(util1_1, IMyUtility, 'myutil') is util1)
-
- def test_queryNextUtility_nested(self):
- from zope.component import getGlobalSiteManager
- from zope.component import queryNextUtility
- from zope.interface.registry import Components
- gsm = getGlobalSiteManager()
- gutil = _makeMyUtility('global', gsm)
- gsm.registerUtility(gutil, IMyUtility, 'myutil')
- sm1 = Components('sm1', bases=(gsm, ))
- sm1_1 = Components('sm1_1', bases=(sm1, ))
- util1 = _makeMyUtility('one', sm1)
- sm1.registerUtility(util1, IMyUtility, 'myutil')
- util1_1 = _makeMyUtility('one-one', sm1_1)
- sm1_1.registerUtility(util1_1, IMyUtility, 'myutil')
- myregistry = Components()
- custom_util = _makeMyUtility('my_custom_util', myregistry)
- myregistry.registerUtility(custom_util, IMyUtility, 'my_custom_util')
- sm1.__bases__ = (myregistry,) + sm1.__bases__
- # Both the ``myregistry`` and global utilities should be available:
- self.assertTrue(queryNextUtility(sm1, IMyUtility, 'my_custom_util')
- is custom_util)
- self.assertTrue(queryNextUtility(sm1, IMyUtility, 'myutil')
- is gutil)
-
- def test_getAdapterInContext_miss(self):
- from zope.interface import Interface
- from zope.component import getAdapterInContext
- from zope.component.interfaces import ComponentLookupError
- class IFoo(Interface):
- pass
- self.assertRaises(ComponentLookupError,
- getAdapterInContext, object(), IFoo, context=None)
-
- def test_getAdapterInContext_hit_via_sm(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.interface.registry import Components
- from zope.component import getGlobalSiteManager
- from zope.component import getAdapterInContext
- from zope.component.tests.examples import ConformsToIComponentLookup
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- @implementer(IFoo)
- class Global(object):
- def __init__(self, context):
- self.context = context
- @implementer(IFoo)
- class Local(object):
- def __init__(self, context):
- self.context = context
- @implementer(IBar)
- class Bar(object):
- pass
- class Context(ConformsToIComponentLookup):
- def __init__(self, sm):
- self.sitemanager = sm
- gsm = getGlobalSiteManager()
- gsm.registerAdapter(Global, (IBar,), IFoo, '')
- sm1 = Components('sm1', bases=(gsm, ))
- sm1.registerAdapter(Local, (IBar,), IFoo, '')
- bar = Bar()
- adapted = getAdapterInContext(bar, IFoo, context=Context(sm1))
- self.assertTrue(adapted.__class__ is Local)
- self.assertTrue(adapted.context is bar)
-
- def test_queryAdapterInContext_miss(self):
- from zope.interface import Interface
- from zope.component import queryAdapterInContext
- class IFoo(Interface):
- pass
- self.assertEqual(
- queryAdapterInContext(object(), IFoo, context=None), None)
-
- def test_queryAdapterInContext_w_object_conforming(self):
- from zope.interface import Interface
- from zope.component import queryAdapterInContext
- class IFoo(Interface):
- pass
- _adapted = object()
- class Foo(object):
- def __conform__(self, iface, default=None):
- if iface is IFoo:
- return _adapted
- return default
- self.assertTrue(
- queryAdapterInContext(Foo(), IFoo, context=None) is _adapted)
-
- def test_queryAdapterInContext___conform___raises_TypeError_via_class(self):
- from zope.interface import Interface
- from zope.component import queryAdapterInContext
- class IFoo(Interface):
- pass
- _adapted = object()
- class Foo(object):
- def __conform__(self, iface, default=None):
- if iface is IFoo:
- return _adapted
- return default
- # call via class, triggering TypeError
- self.assertEqual(queryAdapterInContext(Foo, IFoo, context=None), None)
-
- def test_queryAdapterInContext___conform___raises_TypeError_via_inst(self):
- from zope.interface import Interface
- from zope.component import queryAdapterInContext
- class IFoo(Interface):
- pass
- _adapted = object()
- class Foo(object):
- def __conform__(self, iface, default=None):
- raise TypeError
- self.assertRaises(TypeError,
- queryAdapterInContext, Foo(), IFoo, context=None)
-
- def test_queryAdapterInContext_w_object_implementing(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import queryAdapterInContext
- class IFoo(Interface):
- pass
- @implementer(IFoo)
- class Foo(object):
- pass
- foo = Foo()
- self.assertTrue(
- queryAdapterInContext(foo, IFoo, context=None) is foo)
-
- def test_getAdapter_anonymous_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getAdapter
- from zope.component.interfaces import ComponentLookupError
- class IFoo(Interface):
- pass
- self.assertRaises(ComponentLookupError,
- getAdapter, object(), IFoo, '')
-
- def test_getAdapter_named_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getAdapter
- from zope.component.interfaces import ComponentLookupError
- class IFoo(Interface):
- pass
- self.assertRaises(ComponentLookupError,
- getAdapter, object(), IFoo, 'bar')
-
- def test_getAdapter_anonymous_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import getAdapter
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IFoo)
- class Baz(object):
- def __init__(self, context):
- self.context = context
- getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, '')
- bar = Bar()
- adapted = getAdapter(bar, IFoo, '')
- self.assertTrue(adapted.__class__ is Baz)
- self.assertTrue(adapted.context is bar)
-
- def test_getAdapter_anonymous_hit_registered_for_None(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import getAdapter
- class IFoo(Interface):
- pass
- @implementer(IFoo)
- class Baz(object):
- def __init__(self, context):
- self.context = context
- getGlobalSiteManager().registerAdapter(Baz, (None,), IFoo, '')
- ctx = object()
- adapted = getAdapter(ctx, IFoo, '')
- self.assertTrue(adapted.__class__ is Baz)
- self.assertTrue(adapted.context is ctx)
-
- def test_getAdapter_named_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getAdapter
- from zope.component import getGlobalSiteManager
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IFoo)
- class Baz(object):
- def __init__(self, context):
- self.context = context
- getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, 'named')
- bar = Bar()
- adapted = getAdapter(bar, IFoo, 'named')
- self.assertTrue(adapted.__class__ is Baz)
- self.assertTrue(adapted.context is bar)
-
- def test_queryAdapter_anonymous_nonesuch(self):
- from zope.interface import Interface
- from zope.component import queryAdapter
- class IFoo(Interface):
- pass
- self.assertEqual(queryAdapter(object(), IFoo, '', '<default>'),
- '<default>')
-
- def test_queryAdapter_named_nonesuch(self):
- from zope.interface import Interface
- from zope.component import queryAdapter
- class IFoo(Interface):
- pass
- self.assertEqual(queryAdapter(object(), IFoo, 'bar'), None)
-
- def test_queryAdapter_anonymous_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import queryAdapter
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IFoo)
- class Baz(object):
- def __init__(self, context):
- self.context = context
- getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, '')
- bar = Bar()
- adapted = queryAdapter(bar, IFoo, '')
- self.assertTrue(adapted.__class__ is Baz)
- self.assertTrue(adapted.context is bar)
-
- def test_queryAdapter_named_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import queryAdapter
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IFoo)
- class Baz(object):
- def __init__(self, context):
- self.context = context
- getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, 'named')
- bar = Bar()
- adapted = queryAdapter(bar, IFoo, 'named')
- self.assertTrue(adapted.__class__ is Baz)
- self.assertTrue(adapted.context is bar)
-
- def test_queryAdapter_nested(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.interface.registry import Components
- from zope.component import getGlobalSiteManager
- from zope.component import queryAdapter
- from zope.component.tests.examples import ConformsToIComponentLookup
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- @implementer(IFoo)
- class Global(object):
- def __init__(self, context):
- self.context = context
- @implementer(IFoo)
- class Local(object):
- def __init__(self, context):
- self.context = context
- @implementer(IBar)
- class Bar(object):
- pass
- class Context(ConformsToIComponentLookup):
- def __init__(self, sm):
- self.sitemanager = sm
- gsm = getGlobalSiteManager()
- gsm.registerAdapter(Global, (IBar,), IFoo, '')
- sm1 = Components('sm1', bases=(gsm, ))
- sm1.registerAdapter(Local, (IBar,), IFoo, '')
- bar = Bar()
- adapted = queryAdapter(bar, IFoo, '', context=Context(sm1))
- self.assertTrue(adapted.__class__ is Local)
- self.assertTrue(adapted.context is bar)
-
- def test_interface_call_miss(self):
- from zope.interface import Interface
- class IFoo(Interface):
- pass
- self.assertRaises(TypeError, IFoo, object())
-
- def test_interface_call_miss_w_default(self):
- from zope.interface import Interface
- class IFoo(Interface):
- pass
- marker = object()
- self.assertTrue(IFoo(object(), marker) is marker)
-
- def test_interface_call_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IFoo)
- class Baz(object):
- def __init__(self, context):
- self.context = context
- getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, '')
- bar = Bar()
- adapted = IFoo(bar)
- self.assertTrue(adapted.__class__ is Baz)
- self.assertTrue(adapted.context is bar)
-
- def test_interface_call_hit_registered_for_None(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- class IFoo(Interface):
- pass
- @implementer(IFoo)
- class Baz(object):
- def __init__(self, context):
- self.context = context
- getGlobalSiteManager().registerAdapter(Baz, (None,), IFoo, '')
- ctx = object()
- adapted = IFoo(ctx)
- self.assertTrue(adapted.__class__ is Baz)
- self.assertTrue(adapted.context is ctx)
-
- def test_getMultiAdapter_anonymous_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getMultiAdapter
- from zope.component.interfaces import ComponentLookupError
- class IFoo(Interface):
- pass
- self.assertRaises(ComponentLookupError,
- getMultiAdapter, (object(), object()), IFoo, '')
-
- def test_getMultiAdapter_named_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getMultiAdapter
- from zope.component.interfaces import ComponentLookupError
- class IFoo(Interface):
- pass
- self.assertRaises(ComponentLookupError,
- getMultiAdapter, (object(), object()), IFoo, 'bar')
-
- def test_getMultiAdapter_anonymous_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import getMultiAdapter
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- class IBaz(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IBaz)
- class Baz(object):
- pass
- @implementer(IFoo)
- class FooAdapter(object):
- def __init__(self, first, second):
- self.first, self.second = first, second
- getGlobalSiteManager().registerAdapter(
- FooAdapter, (IBar, IBaz), IFoo, '')
- bar = Bar()
- baz = Baz()
- adapted = getMultiAdapter((bar, baz), IFoo, '')
- self.assertTrue(adapted.__class__ is FooAdapter)
- self.assertTrue(adapted.first is bar)
- self.assertTrue(adapted.second is baz)
-
- def test_getMultiAdapter_anonymous_hit_registered_for_None(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import getMultiAdapter
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- class IBaz(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IFoo)
- class FooAdapter(object):
- def __init__(self, first, second):
- self.first, self.second = first, second
- getGlobalSiteManager().registerAdapter(
- FooAdapter, (IBar, None), IFoo, '')
- bar = Bar()
- baz = object()
- adapted = getMultiAdapter((bar, baz), IFoo, '')
- self.assertTrue(adapted.__class__ is FooAdapter)
- self.assertTrue(adapted.first is bar)
- self.assertTrue(adapted.second is baz)
-
- def test_getMultiAdapter_named_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getMultiAdapter
- from zope.component import getGlobalSiteManager
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- class IBaz(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IBaz)
- class Baz(object):
- pass
- @implementer(IFoo)
- class FooAdapter(object):
- def __init__(self, first, second):
- self.first, self.second = first, second
- getGlobalSiteManager().registerAdapter(
- FooAdapter, (IBar, IBaz), IFoo, 'named')
- bar = Bar()
- baz = Baz()
- adapted = getMultiAdapter((bar, baz), IFoo, 'named')
- self.assertTrue(adapted.__class__ is FooAdapter)
- self.assertTrue(adapted.first is bar)
- self.assertTrue(adapted.second is baz)
-
- def test_queryMultiAdapter_anonymous_nonesuch(self):
- from zope.interface import Interface
- from zope.component import queryMultiAdapter
- class IFoo(Interface):
- pass
- self.assertEqual(queryMultiAdapter((object(), object()), IFoo, '',
- '<default>'),
- '<default>')
-
- def test_queryMultiAdapter_named_nonesuch(self):
- from zope.interface import Interface
- from zope.component import queryMultiAdapter
- class IFoo(Interface):
- pass
- self.assertEqual(queryMultiAdapter((object(), object()), IFoo, 'bar'),
- None)
-
- def test_queryMultiAdapter_anonymous_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import queryMultiAdapter
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- class IBaz(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IBaz)
- class Baz(object):
- pass
- @implementer(IFoo)
- class FooAdapter(object):
- def __init__(self, first, second):
- self.first, self.second = first, second
- getGlobalSiteManager().registerAdapter(
- FooAdapter, (IBar, IBaz), IFoo, '')
- bar = Bar()
- baz = Baz()
- adapted = queryMultiAdapter((bar, baz), IFoo, '')
- self.assertTrue(adapted.__class__ is FooAdapter)
- self.assertTrue(adapted.first is bar)
- self.assertTrue(adapted.second is baz)
-
- def test_queryMultiAdapter_named_hit(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component import getGlobalSiteManager
- from zope.component import queryMultiAdapter
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- class IBaz(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IBaz)
- class Baz(object):
- pass
- @implementer(IFoo)
- class FooAdapter(object):
- def __init__(self, first, second):
- self.first, self.second = first, second
- getGlobalSiteManager().registerAdapter(
- FooAdapter, (IBar, IBaz), IFoo, 'named')
- bar = Bar()
- baz = Baz()
- adapted = queryMultiAdapter((bar, baz), IFoo, 'named')
- self.assertTrue(adapted.__class__ is FooAdapter)
- self.assertTrue(adapted.first is bar)
- self.assertTrue(adapted.second is baz)
-
- def test_queryMultiAdapter_nested(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.interface.registry import Components
- from zope.component import getGlobalSiteManager
- from zope.component import queryMultiAdapter
- from zope.component.tests.examples import ConformsToIComponentLookup
- class IFoo(Interface):
- pass
- class IBar(Interface):
- pass
- class IBaz(Interface):
- pass
- @implementer(IBar)
- class Bar(object):
- pass
- @implementer(IBaz)
- class Baz(object):
- pass
- @implementer(IFoo)
- class Global(object):
- def __init__(self, first, second):
- self.first, self.second = first, second
- @implementer(IFoo)
- class Local(object):
- def __init__(self, first, second):
- self.first, self.second = first, second
- class Context(ConformsToIComponentLookup):
- def __init__(self, sm):
- self.sitemanager = sm
- gsm = getGlobalSiteManager()
- gsm.registerAdapter(Global, (IBar, IBaz), IFoo, '')
- sm1 = Components('sm1', bases=(gsm, ))
- sm1.registerAdapter(Local, (IBar, IBaz), IFoo, '')
- bar = Bar()
- baz = Baz()
- adapted = queryMultiAdapter((bar, baz), IFoo, '', context=Context(sm1))
- self.assertTrue(adapted.__class__ is Local)
- self.assertTrue(adapted.first is bar)
- self.assertTrue(adapted.second is baz)
-
- def test_getAdapters_nonesuch(self):
- from zope.interface import Interface
- from zope.component import getAdapters
- class IFoo(Interface):
- pass
- self.assertEqual(list(getAdapters((object(),), IFoo)), [])
-
- def test_getAdapters_hit(self):
- from zope.interface import Interface
- from zope.component import getGlobalSiteManager
- from zope.component import getAdapters
- class IFoo(Interface):
- pass
- class BarAdapter(object):
- def __init__(self, context):
- self.context = context
- class BazAdapter(object):
- def __init__(self, context):
- self.context = context
- gsm = getGlobalSiteManager()
- gsm.registerAdapter(BarAdapter, (None,), IFoo)
- gsm.registerAdapter(BazAdapter, (None,), IFoo, name='bar')
- tuples = list(getAdapters((object(),), IFoo))
- self.assertEqual(len(tuples), 2)
- names = [(x, y.__class__.__name__) for x, y in tuples]
- self.assertTrue(('', 'BarAdapter') in names)
- self.assertTrue(('bar', 'BazAdapter') in names)
-
-
-IMyUtility = None
-def _makeMyUtility(name, sm):
- global IMyUtility
- from zope.interface import Interface
- from zope.interface import implementer
- from zope.component.tests.examples import ConformsToIComponentLookup
-
- if IMyUtility is None:
- class IMyUtility(Interface):
- pass
-
- @implementer(IMyUtility)
- class MyUtility(ConformsToIComponentLookup):
- def __init__(self, id, sm):
- self.id = id
- self.sitemanager = sm
-
- return MyUtility(name, sm)
-
-
def test_suite():
return unittest.TestSuite((
- unittest.makeSuite(PackageAPITests),
+ unittest.makeSuite(Test_package),
))
Added: zope.component/tseaver-test_cleanup/src/zope/component/tests/test__api.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test__api.py (rev 0)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test__api.py 2012-06-22 17:07:56 UTC (rev 127019)
@@ -0,0 +1,883 @@
+##############################################################################
+#
+# Copyright (c) 2012 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+""" Tests for z.c._api
+"""
+import unittest
+
+
+class PackageAPITests(unittest.TestCase):
+
+ from zope.component.testing import setUp, tearDown
+
+ def test_getSiteManager_no_args(self):
+ from zope.component.globalregistry import base
+ from zope.component.interfaces import IComponentLookup
+ from zope.component import getSiteManager
+ sm = getSiteManager()
+ self.assertTrue(sm is base)
+ self.assertTrue(IComponentLookup.providedBy(sm))
+ self.assertTrue(getSiteManager() is sm)
+
+ def test_getSiteManager_w_None(self):
+ from zope.component import getSiteManager
+ self.assertTrue(getSiteManager(None) is getSiteManager())
+
+ def test_getSiteManager_w_conforming_context(self):
+ from zope.component import getSiteManager
+ from zope.component.tests.examples import ConformsToIComponentLookup
+ sitemanager = object()
+ context = ConformsToIComponentLookup(sitemanager)
+ self.assertTrue(getSiteManager(context) is sitemanager)
+
+ def test_getSiteManager_w_invalid_context(self):
+ from zope.component import getSiteManager
+ from zope.component.interfaces import ComponentLookupError
+ self.assertRaises(ComponentLookupError, getSiteManager, object())
+
+ def test_getUtility_anonymous_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getUtility
+ from zope.component.interfaces import ComponentLookupError
+ class IFoo(Interface):
+ pass
+ self.assertRaises(ComponentLookupError, getUtility, IFoo)
+
+ def test_getUtility_named_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getUtility
+ from zope.component.interfaces import ComponentLookupError
+ class IFoo(Interface):
+ pass
+ self.assertRaises(ComponentLookupError, getUtility, IFoo, name='bar')
+
+ def test_getUtility_anonymous_hit(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import getUtility
+ class IFoo(Interface):
+ pass
+ obj = object()
+ getGlobalSiteManager().registerUtility(obj, IFoo)
+ self.assertTrue(getUtility(IFoo) is obj)
+
+ def test_getUtility_named_hit(self):
+ from zope.interface import Interface
+ from zope.component import getUtility
+ from zope.component import getGlobalSiteManager
+ class IFoo(Interface):
+ pass
+ obj = object()
+ getGlobalSiteManager().registerUtility(obj, IFoo, name='bar')
+ self.assertTrue(getUtility(IFoo, name='bar') is obj)
+
+ def test_getUtility_w_conforming_context(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import getUtility
+ from zope.component.tests.examples import ConformsToIComponentLookup
+ class SM(object):
+ def __init__(self, obj):
+ self._obj = obj
+ def queryUtility(self, interface, name, default):
+ return self._obj
+ class IFoo(Interface):
+ pass
+ obj1 = object()
+ obj2 = object()
+ sm = SM(obj2)
+ context = ConformsToIComponentLookup(sm)
+ getGlobalSiteManager().registerUtility(obj1, IFoo)
+ self.assertTrue(getUtility(IFoo, context=context) is obj2)
+
+ def test_queryUtility_anonymous_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import queryUtility
+ class IFoo(Interface):
+ pass
+ self.assertEqual(queryUtility(IFoo), None)
+
+ def test_queryUtility_anonymous_nonesuch_w_default(self):
+ from zope.interface import Interface
+ from zope.component import queryUtility
+ class IFoo(Interface):
+ pass
+ obj = object()
+ self.assertTrue(queryUtility(IFoo, default=obj) is obj)
+
+ def test_queryUtility_named_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import queryUtility
+ class IFoo(Interface):
+ pass
+ self.assertEqual(queryUtility(IFoo, name='bar'), None)
+
+ def test_queryUtility_named_nonesuch_w_default(self):
+ from zope.interface import Interface
+ from zope.component import queryUtility
+ class IFoo(Interface):
+ pass
+ obj = object()
+ self.assertTrue(queryUtility(IFoo, name='bar', default=obj) is obj)
+
+ def test_queryUtility_anonymous_hit(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryUtility
+ class IFoo(Interface):
+ pass
+ obj = object()
+ getGlobalSiteManager().registerUtility(obj, IFoo)
+ self.assertTrue(queryUtility(IFoo) is obj)
+
+ def test_queryUtility_named_hit(self):
+ from zope.interface import Interface
+ from zope.component import queryUtility
+ from zope.component import getGlobalSiteManager
+ class IFoo(Interface):
+ pass
+ obj = object()
+ getGlobalSiteManager().registerUtility(obj, IFoo, name='bar')
+ self.assertTrue(queryUtility(IFoo, name='bar') is obj)
+
+ def test_queryUtility_w_conforming_context(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryUtility
+ from zope.component.tests.examples import ConformsToIComponentLookup
+ class SM(object):
+ def __init__(self, obj):
+ self._obj = obj
+ def queryUtility(self, interface, name, default):
+ return self._obj
+ class IFoo(Interface):
+ pass
+ obj1 = object()
+ obj2 = object()
+ sm = SM(obj2)
+ context = ConformsToIComponentLookup(sm)
+ getGlobalSiteManager().registerUtility(obj1, IFoo)
+ self.assertTrue(queryUtility(IFoo, context=context) is obj2)
+
+ def test_getUtilitiesFor_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getUtilitiesFor
+ class IFoo(Interface):
+ pass
+ self.assertEqual(list(getUtilitiesFor(IFoo)), [])
+
+ def test_getUtilitiesFor_hit(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import getUtilitiesFor
+ class IFoo(Interface):
+ pass
+ obj = object()
+ obj1 = object()
+ getGlobalSiteManager().registerUtility(obj, IFoo)
+ getGlobalSiteManager().registerUtility(obj1, IFoo, name='bar')
+ tuples = list(getUtilitiesFor(IFoo))
+ self.assertEqual(len(tuples), 2)
+ self.assertTrue(('', obj) in tuples)
+ self.assertTrue(('bar', obj1) in tuples)
+
+ def test_getAllUtilitiesRegisteredFor_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getAllUtilitiesRegisteredFor
+ class IFoo(Interface):
+ pass
+ self.assertEqual(list(getAllUtilitiesRegisteredFor(IFoo)), [])
+
+ def test_getAllUtilitiesRegisteredFor_hit(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import getAllUtilitiesRegisteredFor
+ class IFoo(Interface):
+ pass
+ class IBar(IFoo):
+ pass
+ obj = object()
+ obj1 = object()
+ obj2 = object()
+ getGlobalSiteManager().registerUtility(obj, IFoo)
+ getGlobalSiteManager().registerUtility(obj1, IFoo, name='bar')
+ getGlobalSiteManager().registerUtility(obj2, IBar)
+ uts = list(getAllUtilitiesRegisteredFor(IFoo))
+ self.assertEqual(len(uts), 3)
+ self.assertTrue(obj in uts)
+ self.assertTrue(obj1 in uts)
+ self.assertTrue(obj2 in uts)
+
+ def test_getNextUtility_global(self):
+ from zope.component import getGlobalSiteManager
+ from zope.component import getNextUtility
+ from zope.component.interface import ComponentLookupError
+ gsm = getGlobalSiteManager()
+ gutil = _makeMyUtility('global', gsm)
+ gsm.registerUtility(gutil, IMyUtility, 'myutil')
+ self.assertRaises(ComponentLookupError,
+ getNextUtility, gutil, IMyUtility, 'myutil')
+
+ def test_queryNextUtility_global(self):
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryNextUtility
+ gsm = getGlobalSiteManager()
+ gutil = _makeMyUtility('global', gsm)
+ gsm.registerUtility(gutil, IMyUtility, 'myutil')
+ self.assertEqual(queryNextUtility(gutil, IMyUtility, 'myutil'), None)
+
+ def test_getNextUtility_nested(self):
+ from zope.component import getGlobalSiteManager
+ from zope.component import getNextUtility
+ from zope.component.interfaces import IComponentLookup
+ from zope.interface.registry import Components
+ gsm = getGlobalSiteManager()
+ gutil = _makeMyUtility('global', gsm)
+ gsm.registerUtility(gutil, IMyUtility, 'myutil')
+ sm1 = Components('sm1', bases=(gsm, ))
+ sm1_1 = Components('sm1_1', bases=(sm1, ))
+ util1 = _makeMyUtility('one', sm1)
+ sm1.registerUtility(util1, IMyUtility, 'myutil')
+ self.assertTrue(IComponentLookup(util1) is sm1)
+ self.assertTrue(getNextUtility(util1, IMyUtility, 'myutil') is gutil)
+ util1_1 = _makeMyUtility('one-one', sm1_1)
+ sm1_1.registerUtility(util1_1, IMyUtility, 'myutil')
+ self.assertTrue(IComponentLookup(util1_1) is sm1_1)
+ self.assertTrue(getNextUtility(util1_1, IMyUtility, 'myutil') is util1)
+
+ def test_queryNextUtility_nested(self):
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryNextUtility
+ from zope.interface.registry import Components
+ gsm = getGlobalSiteManager()
+ gutil = _makeMyUtility('global', gsm)
+ gsm.registerUtility(gutil, IMyUtility, 'myutil')
+ sm1 = Components('sm1', bases=(gsm, ))
+ sm1_1 = Components('sm1_1', bases=(sm1, ))
+ util1 = _makeMyUtility('one', sm1)
+ sm1.registerUtility(util1, IMyUtility, 'myutil')
+ util1_1 = _makeMyUtility('one-one', sm1_1)
+ sm1_1.registerUtility(util1_1, IMyUtility, 'myutil')
+ myregistry = Components()
+ custom_util = _makeMyUtility('my_custom_util', myregistry)
+ myregistry.registerUtility(custom_util, IMyUtility, 'my_custom_util')
+ sm1.__bases__ = (myregistry,) + sm1.__bases__
+ # Both the ``myregistry`` and global utilities should be available:
+ self.assertTrue(queryNextUtility(sm1, IMyUtility, 'my_custom_util')
+ is custom_util)
+ self.assertTrue(queryNextUtility(sm1, IMyUtility, 'myutil')
+ is gutil)
+
+ def test_getAdapterInContext_miss(self):
+ from zope.interface import Interface
+ from zope.component import getAdapterInContext
+ from zope.component.interfaces import ComponentLookupError
+ class IFoo(Interface):
+ pass
+ self.assertRaises(ComponentLookupError,
+ getAdapterInContext, object(), IFoo, context=None)
+
+ def test_getAdapterInContext_hit_via_sm(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.interface.registry import Components
+ from zope.component import getGlobalSiteManager
+ from zope.component import getAdapterInContext
+ from zope.component.tests.examples import ConformsToIComponentLookup
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ @implementer(IFoo)
+ class Global(object):
+ def __init__(self, context):
+ self.context = context
+ @implementer(IFoo)
+ class Local(object):
+ def __init__(self, context):
+ self.context = context
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ class Context(ConformsToIComponentLookup):
+ def __init__(self, sm):
+ self.sitemanager = sm
+ gsm = getGlobalSiteManager()
+ gsm.registerAdapter(Global, (IBar,), IFoo, '')
+ sm1 = Components('sm1', bases=(gsm, ))
+ sm1.registerAdapter(Local, (IBar,), IFoo, '')
+ bar = Bar()
+ adapted = getAdapterInContext(bar, IFoo, context=Context(sm1))
+ self.assertTrue(adapted.__class__ is Local)
+ self.assertTrue(adapted.context is bar)
+
+ def test_queryAdapterInContext_miss(self):
+ from zope.interface import Interface
+ from zope.component import queryAdapterInContext
+ class IFoo(Interface):
+ pass
+ self.assertEqual(
+ queryAdapterInContext(object(), IFoo, context=None), None)
+
+ def test_queryAdapterInContext_w_object_conforming(self):
+ from zope.interface import Interface
+ from zope.component import queryAdapterInContext
+ class IFoo(Interface):
+ pass
+ _adapted = object()
+ class Foo(object):
+ def __conform__(self, iface, default=None):
+ if iface is IFoo:
+ return _adapted
+ return default
+ self.assertTrue(
+ queryAdapterInContext(Foo(), IFoo, context=None) is _adapted)
+
+ def test_queryAdapterInContext___conform___raises_TypeError_via_class(self):
+ from zope.interface import Interface
+ from zope.component import queryAdapterInContext
+ class IFoo(Interface):
+ pass
+ _adapted = object()
+ class Foo(object):
+ def __conform__(self, iface, default=None):
+ if iface is IFoo:
+ return _adapted
+ return default
+ # call via class, triggering TypeError
+ self.assertEqual(queryAdapterInContext(Foo, IFoo, context=None), None)
+
+ def test_queryAdapterInContext___conform___raises_TypeError_via_inst(self):
+ from zope.interface import Interface
+ from zope.component import queryAdapterInContext
+ class IFoo(Interface):
+ pass
+ _adapted = object()
+ class Foo(object):
+ def __conform__(self, iface, default=None):
+ raise TypeError
+ self.assertRaises(TypeError,
+ queryAdapterInContext, Foo(), IFoo, context=None)
+
+ def test_queryAdapterInContext_w_object_implementing(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import queryAdapterInContext
+ class IFoo(Interface):
+ pass
+ @implementer(IFoo)
+ class Foo(object):
+ pass
+ foo = Foo()
+ self.assertTrue(
+ queryAdapterInContext(foo, IFoo, context=None) is foo)
+
+ def test_getAdapter_anonymous_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getAdapter
+ from zope.component.interfaces import ComponentLookupError
+ class IFoo(Interface):
+ pass
+ self.assertRaises(ComponentLookupError,
+ getAdapter, object(), IFoo, '')
+
+ def test_getAdapter_named_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getAdapter
+ from zope.component.interfaces import ComponentLookupError
+ class IFoo(Interface):
+ pass
+ self.assertRaises(ComponentLookupError,
+ getAdapter, object(), IFoo, 'bar')
+
+ def test_getAdapter_anonymous_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import getAdapter
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IFoo)
+ class Baz(object):
+ def __init__(self, context):
+ self.context = context
+ getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, '')
+ bar = Bar()
+ adapted = getAdapter(bar, IFoo, '')
+ self.assertTrue(adapted.__class__ is Baz)
+ self.assertTrue(adapted.context is bar)
+
+ def test_getAdapter_anonymous_hit_registered_for_None(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import getAdapter
+ class IFoo(Interface):
+ pass
+ @implementer(IFoo)
+ class Baz(object):
+ def __init__(self, context):
+ self.context = context
+ getGlobalSiteManager().registerAdapter(Baz, (None,), IFoo, '')
+ ctx = object()
+ adapted = getAdapter(ctx, IFoo, '')
+ self.assertTrue(adapted.__class__ is Baz)
+ self.assertTrue(adapted.context is ctx)
+
+ def test_getAdapter_named_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getAdapter
+ from zope.component import getGlobalSiteManager
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IFoo)
+ class Baz(object):
+ def __init__(self, context):
+ self.context = context
+ getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, 'named')
+ bar = Bar()
+ adapted = getAdapter(bar, IFoo, 'named')
+ self.assertTrue(adapted.__class__ is Baz)
+ self.assertTrue(adapted.context is bar)
+
+ def test_queryAdapter_anonymous_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import queryAdapter
+ class IFoo(Interface):
+ pass
+ self.assertEqual(queryAdapter(object(), IFoo, '', '<default>'),
+ '<default>')
+
+ def test_queryAdapter_named_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import queryAdapter
+ class IFoo(Interface):
+ pass
+ self.assertEqual(queryAdapter(object(), IFoo, 'bar'), None)
+
+ def test_queryAdapter_anonymous_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryAdapter
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IFoo)
+ class Baz(object):
+ def __init__(self, context):
+ self.context = context
+ getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, '')
+ bar = Bar()
+ adapted = queryAdapter(bar, IFoo, '')
+ self.assertTrue(adapted.__class__ is Baz)
+ self.assertTrue(adapted.context is bar)
+
+ def test_queryAdapter_named_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryAdapter
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IFoo)
+ class Baz(object):
+ def __init__(self, context):
+ self.context = context
+ getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, 'named')
+ bar = Bar()
+ adapted = queryAdapter(bar, IFoo, 'named')
+ self.assertTrue(adapted.__class__ is Baz)
+ self.assertTrue(adapted.context is bar)
+
+ def test_queryAdapter_nested(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.interface.registry import Components
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryAdapter
+ from zope.component.tests.examples import ConformsToIComponentLookup
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ @implementer(IFoo)
+ class Global(object):
+ def __init__(self, context):
+ self.context = context
+ @implementer(IFoo)
+ class Local(object):
+ def __init__(self, context):
+ self.context = context
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ class Context(ConformsToIComponentLookup):
+ def __init__(self, sm):
+ self.sitemanager = sm
+ gsm = getGlobalSiteManager()
+ gsm.registerAdapter(Global, (IBar,), IFoo, '')
+ sm1 = Components('sm1', bases=(gsm, ))
+ sm1.registerAdapter(Local, (IBar,), IFoo, '')
+ bar = Bar()
+ adapted = queryAdapter(bar, IFoo, '', context=Context(sm1))
+ self.assertTrue(adapted.__class__ is Local)
+ self.assertTrue(adapted.context is bar)
+
+ def test_interface_call_miss(self):
+ from zope.interface import Interface
+ class IFoo(Interface):
+ pass
+ self.assertRaises(TypeError, IFoo, object())
+
+ def test_interface_call_miss_w_default(self):
+ from zope.interface import Interface
+ class IFoo(Interface):
+ pass
+ marker = object()
+ self.assertTrue(IFoo(object(), marker) is marker)
+
+ def test_interface_call_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IFoo)
+ class Baz(object):
+ def __init__(self, context):
+ self.context = context
+ getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, '')
+ bar = Bar()
+ adapted = IFoo(bar)
+ self.assertTrue(adapted.__class__ is Baz)
+ self.assertTrue(adapted.context is bar)
+
+ def test_interface_call_hit_registered_for_None(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ class IFoo(Interface):
+ pass
+ @implementer(IFoo)
+ class Baz(object):
+ def __init__(self, context):
+ self.context = context
+ getGlobalSiteManager().registerAdapter(Baz, (None,), IFoo, '')
+ ctx = object()
+ adapted = IFoo(ctx)
+ self.assertTrue(adapted.__class__ is Baz)
+ self.assertTrue(adapted.context is ctx)
+
+ def test_getMultiAdapter_anonymous_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getMultiAdapter
+ from zope.component.interfaces import ComponentLookupError
+ class IFoo(Interface):
+ pass
+ self.assertRaises(ComponentLookupError,
+ getMultiAdapter, (object(), object()), IFoo, '')
+
+ def test_getMultiAdapter_named_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getMultiAdapter
+ from zope.component.interfaces import ComponentLookupError
+ class IFoo(Interface):
+ pass
+ self.assertRaises(ComponentLookupError,
+ getMultiAdapter, (object(), object()), IFoo, 'bar')
+
+ def test_getMultiAdapter_anonymous_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import getMultiAdapter
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ class IBaz(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IBaz)
+ class Baz(object):
+ pass
+ @implementer(IFoo)
+ class FooAdapter(object):
+ def __init__(self, first, second):
+ self.first, self.second = first, second
+ getGlobalSiteManager().registerAdapter(
+ FooAdapter, (IBar, IBaz), IFoo, '')
+ bar = Bar()
+ baz = Baz()
+ adapted = getMultiAdapter((bar, baz), IFoo, '')
+ self.assertTrue(adapted.__class__ is FooAdapter)
+ self.assertTrue(adapted.first is bar)
+ self.assertTrue(adapted.second is baz)
+
+ def test_getMultiAdapter_anonymous_hit_registered_for_None(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import getMultiAdapter
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ class IBaz(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IFoo)
+ class FooAdapter(object):
+ def __init__(self, first, second):
+ self.first, self.second = first, second
+ getGlobalSiteManager().registerAdapter(
+ FooAdapter, (IBar, None), IFoo, '')
+ bar = Bar()
+ baz = object()
+ adapted = getMultiAdapter((bar, baz), IFoo, '')
+ self.assertTrue(adapted.__class__ is FooAdapter)
+ self.assertTrue(adapted.first is bar)
+ self.assertTrue(adapted.second is baz)
+
+ def test_getMultiAdapter_named_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getMultiAdapter
+ from zope.component import getGlobalSiteManager
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ class IBaz(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IBaz)
+ class Baz(object):
+ pass
+ @implementer(IFoo)
+ class FooAdapter(object):
+ def __init__(self, first, second):
+ self.first, self.second = first, second
+ getGlobalSiteManager().registerAdapter(
+ FooAdapter, (IBar, IBaz), IFoo, 'named')
+ bar = Bar()
+ baz = Baz()
+ adapted = getMultiAdapter((bar, baz), IFoo, 'named')
+ self.assertTrue(adapted.__class__ is FooAdapter)
+ self.assertTrue(adapted.first is bar)
+ self.assertTrue(adapted.second is baz)
+
+ def test_queryMultiAdapter_anonymous_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import queryMultiAdapter
+ class IFoo(Interface):
+ pass
+ self.assertEqual(queryMultiAdapter((object(), object()), IFoo, '',
+ '<default>'),
+ '<default>')
+
+ def test_queryMultiAdapter_named_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import queryMultiAdapter
+ class IFoo(Interface):
+ pass
+ self.assertEqual(queryMultiAdapter((object(), object()), IFoo, 'bar'),
+ None)
+
+ def test_queryMultiAdapter_anonymous_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryMultiAdapter
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ class IBaz(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IBaz)
+ class Baz(object):
+ pass
+ @implementer(IFoo)
+ class FooAdapter(object):
+ def __init__(self, first, second):
+ self.first, self.second = first, second
+ getGlobalSiteManager().registerAdapter(
+ FooAdapter, (IBar, IBaz), IFoo, '')
+ bar = Bar()
+ baz = Baz()
+ adapted = queryMultiAdapter((bar, baz), IFoo, '')
+ self.assertTrue(adapted.__class__ is FooAdapter)
+ self.assertTrue(adapted.first is bar)
+ self.assertTrue(adapted.second is baz)
+
+ def test_queryMultiAdapter_named_hit(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryMultiAdapter
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ class IBaz(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IBaz)
+ class Baz(object):
+ pass
+ @implementer(IFoo)
+ class FooAdapter(object):
+ def __init__(self, first, second):
+ self.first, self.second = first, second
+ getGlobalSiteManager().registerAdapter(
+ FooAdapter, (IBar, IBaz), IFoo, 'named')
+ bar = Bar()
+ baz = Baz()
+ adapted = queryMultiAdapter((bar, baz), IFoo, 'named')
+ self.assertTrue(adapted.__class__ is FooAdapter)
+ self.assertTrue(adapted.first is bar)
+ self.assertTrue(adapted.second is baz)
+
+ def test_queryMultiAdapter_nested(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.interface.registry import Components
+ from zope.component import getGlobalSiteManager
+ from zope.component import queryMultiAdapter
+ from zope.component.tests.examples import ConformsToIComponentLookup
+ class IFoo(Interface):
+ pass
+ class IBar(Interface):
+ pass
+ class IBaz(Interface):
+ pass
+ @implementer(IBar)
+ class Bar(object):
+ pass
+ @implementer(IBaz)
+ class Baz(object):
+ pass
+ @implementer(IFoo)
+ class Global(object):
+ def __init__(self, first, second):
+ self.first, self.second = first, second
+ @implementer(IFoo)
+ class Local(object):
+ def __init__(self, first, second):
+ self.first, self.second = first, second
+ class Context(ConformsToIComponentLookup):
+ def __init__(self, sm):
+ self.sitemanager = sm
+ gsm = getGlobalSiteManager()
+ gsm.registerAdapter(Global, (IBar, IBaz), IFoo, '')
+ sm1 = Components('sm1', bases=(gsm, ))
+ sm1.registerAdapter(Local, (IBar, IBaz), IFoo, '')
+ bar = Bar()
+ baz = Baz()
+ adapted = queryMultiAdapter((bar, baz), IFoo, '', context=Context(sm1))
+ self.assertTrue(adapted.__class__ is Local)
+ self.assertTrue(adapted.first is bar)
+ self.assertTrue(adapted.second is baz)
+
+ def test_getAdapters_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getAdapters
+ class IFoo(Interface):
+ pass
+ self.assertEqual(list(getAdapters((object(),), IFoo)), [])
+
+ def test_getAdapters_hit(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import getAdapters
+ class IFoo(Interface):
+ pass
+ class BarAdapter(object):
+ def __init__(self, context):
+ self.context = context
+ class BazAdapter(object):
+ def __init__(self, context):
+ self.context = context
+ gsm = getGlobalSiteManager()
+ gsm.registerAdapter(BarAdapter, (None,), IFoo)
+ gsm.registerAdapter(BazAdapter, (None,), IFoo, name='bar')
+ tuples = list(getAdapters((object(),), IFoo))
+ self.assertEqual(len(tuples), 2)
+ names = [(x, y.__class__.__name__) for x, y in tuples]
+ self.assertTrue(('', 'BarAdapter') in names)
+ self.assertTrue(('bar', 'BazAdapter') in names)
+
+
+IMyUtility = None
+def _makeMyUtility(name, sm):
+ global IMyUtility
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.component.tests.examples import ConformsToIComponentLookup
+
+ if IMyUtility is None:
+ class IMyUtility(Interface):
+ pass
+
+ @implementer(IMyUtility)
+ class MyUtility(ConformsToIComponentLookup):
+ def __init__(self, id, sm):
+ self.id = id
+ self.sitemanager = sm
+
+ return MyUtility(name, sm)
+
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(PackageAPITests),
+ ))
+
Added: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_globalregistry.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_globalregistry.py (rev 0)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_globalregistry.py 2012-06-22 17:07:56 UTC (rev 127019)
@@ -0,0 +1,54 @@
+##############################################################################
+#
+# Copyright (c) 2012 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+""" Tests for z.c._api
+"""
+import unittest
+
+class Test_getGlobalSiteManager(unittest.TestCase):
+
+ def _callFUT(self):
+ from zope.component.globalregistry import getGlobalSiteManager
+ return getGlobalSiteManager()
+
+ def test_gsm_is_IComponentLookup(self):
+ from zope.component.globalregistry import base
+ from zope.component.interfaces import IComponentLookup
+ gsm = self._callFUT()
+ self.assertTrue(gsm is base)
+ self.assertTrue(IComponentLookup.providedBy(gsm))
+
+ def test_gsm_is_singleton(self):
+ gsm = self._callFUT()
+ self.assertTrue(self._callFUT() is gsm)
+
+ def test_gsm_pickling(self):
+ import cPickle
+ gsm = self._callFUT()
+ dumped = cPickle.dumps(gsm)
+ loaded = cPickle.loads(dumped)
+ self.assertTrue(loaded is gsm)
+
+ dumped_utilities = cPickle.dumps(gsm.utilities)
+ loaded_utilities = cPickle.loads(dumped_utilities)
+ self.assertTrue(loaded_utilities is gsm.utilities)
+
+ dumped_adapters = cPickle.dumps(gsm.adapters)
+ loaded_adapters = cPickle.loads(dumped_adapters)
+ self.assertTrue(loaded_adapters is gsm.adapters)
+
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(Test_getGlobalSiteManager),
+ ))
More information about the checkins
mailing list