diff options
-rw-r--r-- | .travis.yml | 4 | ||||
-rw-r--r-- | CHANGES.rst | 3 | ||||
-rw-r--r-- | src/zope/component/globalregistry.py | 2 | ||||
-rw-r--r-- | src/zope/component/tests/test_globalregistry.py | 28 | ||||
-rw-r--r-- | tox.ini | 10 |
5 files changed, 39 insertions, 8 deletions
diff --git a/.travis.yml b/.travis.yml index 291197b..809b6e1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,9 @@ language: python +env: + global: + ZOPE_INTERFACE_STRICT_IRO: 1 + python: - 2.7 - 3.5 diff --git a/CHANGES.rst b/CHANGES.rst index 45cc704..9c93aa4 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,7 +4,8 @@ Changes 4.6.1 (unreleased) ------------------ -- Nothing changed yet. +- Ensure the resolution order of ``BaseGlobalComponents`` is + consistent. See `issue 45 <https://github.com/zopefoundation/zope.component/issues/45>`_. 4.6 (2019-11-12) diff --git a/src/zope/component/globalregistry.py b/src/zope/component/globalregistry.py index c40626c..80b0d72 100644 --- a/src/zope/component/globalregistry.py +++ b/src/zope/component/globalregistry.py @@ -37,7 +37,7 @@ class GlobalAdapterRegistry(AdapterRegistry): def __reduce__(self): return GAR, (self.__parent__, self.__name__) -@implementer(IComponentLookup) + class BaseGlobalComponents(Components): def _init_registries(self): diff --git a/src/zope/component/tests/test_globalregistry.py b/src/zope/component/tests/test_globalregistry.py index 618dc3d..9c0924c 100644 --- a/src/zope/component/tests/test_globalregistry.py +++ b/src/zope/component/tests/test_globalregistry.py @@ -244,3 +244,31 @@ class Test_provideHandler(unittest.TestCase): self.assertEqual(list(hr.required), [IFoo]) self.assertEqual(hr.name, '') self.assertTrue(hr.factory is _handler) + + +class TestBaseGlobalComponents(unittest.TestCase): + + from zope.component.testing import setUp, tearDown + + def _getTargetClass(self): + from zope.component.globalregistry import BaseGlobalComponents + return BaseGlobalComponents + + def _getTargetInterfaces(self): + from zope.interface.interfaces import IComponentLookup + from zope.interface.interfaces import IComponents + from zope.interface.interfaces import IComponentRegistry + return [IComponents, IComponentLookup, IComponentRegistry] + + def _makeOne(self): + return self._getTargetClass()() + + def test_verifyInstance(self): + from zope.interface.verify import verifyObject + for iface in self._getTargetInterfaces(): + verifyObject(iface, self._makeOne()) + + def test_verifyClass(self): + from zope.interface.verify import verifyClass + for iface in self._getTargetInterfaces(): + verifyClass(iface, self._getTargetClass()) @@ -19,6 +19,8 @@ deps = commands = zope-testrunner --test-path=src sphinx-build -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest +setenv = + ZOPE_INTERFACE_STRICT_IRO = 1 [testenv:py27-minimal] basepython = @@ -28,17 +30,12 @@ deps = commands = zope-testrunner --test-path=src -[testenv:py34-pure] -basepython = - python3.4 -setenv = - PURE_PYTHON = 1 - PIP_CACHE_DIR = {envdir}/.cache [testenv:py35-pure] basepython = python3.5 setenv = + {[testenv]setenv} PURE_PYTHON = 1 PIP_CACHE_DIR = {envdir}/.cache @@ -46,6 +43,7 @@ setenv = basepython = python3.4 setenv = + {[testenv]setenv} PURE_PYTHON = 1 PIP_CACHE_DIR = {envdir}/.cache |