summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Madden <jamadden@gmail.com>2020-03-22 07:21:20 -0500
committerJason Madden <jamadden@gmail.com>2020-03-22 07:21:20 -0500
commitde12a4cf51440d404f2a2bc38b7316832dba7d45 (patch)
tree5fa91951c6f13251eb4df287a5619c8a3d056161
parent9d64102f1aad5243918bad3665d08fb5905d39f5 (diff)
downloadzope-component-issue45.tar.gz
Ensure resolution order is consistent.issue45
Fixes #45. Tests won't be green until zope.configuration is released with its corresponding fix, as well as zope.security (which needs BTrees).
-rw-r--r--.travis.yml4
-rw-r--r--CHANGES.rst3
-rw-r--r--src/zope/component/globalregistry.py2
-rw-r--r--src/zope/component/tests/test_globalregistry.py28
-rw-r--r--tox.ini10
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())
diff --git a/tox.ini b/tox.ini
index 9c4396a..2264788 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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