[Checkins] SVN: zope.copy/trunk/ Drop 'zope.component' as a testing requirement.
Tres Seaver
cvs-admin at zope.org
Wed Jun 13 20:06:15 UTC 2012
Log message for revision 126854:
Drop 'zope.component' as a testing requirement.
Instead, register explicity dummy adapter hooks where needed.
Changed:
_U zope.copy/trunk/
U zope.copy/trunk/CHANGES.txt
U zope.copy/trunk/setup.py
U zope.copy/trunk/src/zope/copy/tests/test_copy.py
U zope.copy/trunk/tox.ini
-=-
Modified: zope.copy/trunk/CHANGES.txt
===================================================================
--- zope.copy/trunk/CHANGES.txt 2012-06-13 20:06:08 UTC (rev 126853)
+++ zope.copy/trunk/CHANGES.txt 2012-06-13 20:06:12 UTC (rev 126854)
@@ -5,6 +5,9 @@
4.0.0 (unreleased)
------------------
+- Dropped ``zope.component`` as a testing requirement. Instead, register
+ explicit (dummy) adapter hooks where needed.
+
- Added PyPy support.
- 100% unit test coverage.
Modified: zope.copy/trunk/setup.py
===================================================================
--- zope.copy/trunk/setup.py 2012-06-13 20:06:08 UTC (rev 126853)
+++ zope.copy/trunk/setup.py 2012-06-13 20:06:12 UTC (rev 126854)
@@ -20,7 +20,6 @@
return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
TESTS_REQUIRE = [
- 'zope.component',
'zope.location',
'zope.testing',
]
Modified: zope.copy/trunk/src/zope/copy/tests/test_copy.py
===================================================================
--- zope.copy/trunk/src/zope/copy/tests/test_copy.py 2012-06-13 20:06:08 UTC (rev 126853)
+++ zope.copy/trunk/src/zope/copy/tests/test_copy.py 2012-06-13 20:06:12 UTC (rev 126854)
@@ -13,14 +13,19 @@
##############################################################################
import unittest
+class _Base(object):
-class Test_clone(unittest.TestCase):
-
def setUp(self):
- from zope.component.globalregistry import base
- base.__init__('base') # blow away previous registrations
- tearDown = setUp
+ from zope.interface.interface import adapter_hooks
+ self._restore = adapter_hooks[:]
+
+ def tearDown(self):
+ from zope.interface.interface import adapter_hooks
+ adapter_hooks[:] = self._restore
+
+class Test_clone(_Base, unittest.TestCase):
+
def _callFUT(self, obj):
from zope.copy import clone
return clone(obj)
@@ -36,20 +41,20 @@
self.assertTrue(copied.isFrozen())
def test_w_simple_hook(self):
- from zope.component import provideAdapter
- from zope.interface import implementer
from zope.copy.interfaces import ICopyHook
from zope.copy.examples import Data
from zope.copy.examples import Demo
demo = Demo()
demo.freeze()
- @implementer(ICopyHook)
class Hook(object):
def __init__(self, context):
self.context = context
def __call__(self, obj, register):
return None
- provideAdapter(Hook, (Data,))
+ def _adapt(iface, obj):
+ if iface is ICopyHook and isinstance(obj, Data):
+ return Hook(obj)
+ _registerAdapterHook(_adapt)
copied = self._callFUT(demo)
self.assertFalse(copied is demo)
self.assertTrue(isinstance(copied, Demo))
@@ -73,8 +78,6 @@
self.assertEqual(o.subobject(), 3)
def test_subobject_w_post_copy_hook(self):
- from zope.component import provideAdapter
- from zope.interface import implementer
from zope.copy.interfaces import ICopyHook
from zope.location.location import Location
from zope.location.location import locate
@@ -87,7 +90,6 @@
self.assertEqual(o.subobject(), 0)
self.assertEqual(o.subobject(), 1)
self.assertEqual(o.subobject(), 2)
- @implementer(ICopyHook)
class Hook(object):
def __init__(self, context):
self.context = context
@@ -97,20 +99,18 @@
obj.__parent__ = translate(self.context.__parent__)
register(reparent)
return obj
- provideAdapter(Hook, (Subobject,))
+ def _adapt(iface, obj):
+ if iface is ICopyHook and isinstance(obj, Subobject):
+ return Hook(obj)
+ _registerAdapterHook(_adapt)
c = self._callFUT(o)
self.assertTrue(c.subobject.__parent__ is c)
self.assertEqual(c.subobject(), 0)
self.assertEqual(o.subobject(), 3)
-class Test_copy(unittest.TestCase):
+class Test_copy(_Base, unittest.TestCase):
- def setUp(self):
- from zope.component.globalregistry import base
- base.__init__('base') # blow away previous registrations
- tearDown = setUp
-
def _callFUT(self, obj):
from zope.copy import copy
return copy(obj)
@@ -145,13 +145,8 @@
self.assertEqual(copied.__name__, 'foo')
-class CopyPersistentTests(unittest.TestCase):
+class CopyPersistentTests(_Base, unittest.TestCase):
- def setUp(self):
- from zope.component.globalregistry import base
- base.__init__('base') # blow away previous registrations
- tearDown = setUp
-
def _getTargetClass(self):
from zope.copy import CopyPersistent
return CopyPersistent
@@ -173,53 +168,50 @@
self.assertEqual(cp.id(obj), None)
def test_id_w_hook_already_cached(self):
- from zope.component import provideAdapter
- from zope.interface import implementer
- from zope.interface import Interface
from zope.copy.interfaces import ICopyHook
obj = object()
cp = self._makeOne(obj)
cp.pids_by_id[id(obj)] = 'PID'
- @implementer(ICopyHook)
class Hook(object):
def __init__(self, context):
self.context = context
def __call__(self, obj, register):
return None
- provideAdapter(Hook, (Interface,))
+ def _adapt(iface, obj):
+ if iface is ICopyHook:
+ return Hook(obj)
+ _registerAdapterHook(_adapt)
self.assertEqual(cp.id(obj), 'PID')
def test_id_w_hook_raising_ResumeCopy(self):
- from zope.component import provideAdapter
- from zope.interface import implementer
- from zope.interface import Interface
from zope.copy.interfaces import ICopyHook
from zope.copy.interfaces import ResumeCopy
obj = object()
cp = self._makeOne(obj)
- @implementer(ICopyHook)
class Hook(object):
def __init__(self, context):
self.context = context
def __call__(self, obj, register):
raise ResumeCopy()
- provideAdapter(Hook, (Interface,))
+ def _adapt(iface, obj):
+ if iface is ICopyHook:
+ return Hook(obj)
+ _registerAdapterHook(_adapt)
self.assertEqual(cp.id(obj), None)
def test_id_w_hook_normal(self):
- from zope.component import provideAdapter
- from zope.interface import implementer
- from zope.interface import Interface
from zope.copy.interfaces import ICopyHook
obj = object()
cp = self._makeOne(obj)
- @implementer(ICopyHook)
class Hook(object):
def __init__(self, context):
self.context = context
def __call__(self, obj, register):
return None
- provideAdapter(Hook, (Interface,))
+ def _adapt(iface, obj):
+ if iface is ICopyHook:
+ return Hook(obj)
+ _registerAdapterHook(_adapt)
self.assertEqual(cp.id(obj), 1)
obj2 = object()
self.assertEqual(cp.id(obj2), 2)
@@ -227,6 +219,11 @@
self.assertEqual(cp.others_by_pid, {1: None, 2: None})
+def _registerAdapterHook(func):
+ from zope.interface.interface import adapter_hooks
+ adapter_hooks.insert(0, func)
+
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(Test_clone),
Modified: zope.copy/trunk/tox.ini
===================================================================
--- zope.copy/trunk/tox.ini 2012-06-13 20:06:08 UTC (rev 126853)
+++ zope.copy/trunk/tox.ini 2012-06-13 20:06:12 UTC (rev 126854)
@@ -11,7 +11,6 @@
python setup.py test -q
deps =
zope.interface
- zope.component
zope.location
[testenv:jython]
@@ -30,7 +29,6 @@
nosetests --with-xunit --with-xcoverage
deps =
zope.interface
- zope.component
zope.location
nose
coverage
More information about the checkins
mailing list