[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