[Zope-Checkins] SVN: Zope/trunk/lib/python/Testing/ZopeTestCase/ - Made base.TestCase a new-style class.

Stefan H. Holek stefan at epy.co.at
Sun Mar 26 20:29:35 EST 2006


Log message for revision 66219:
  - Made base.TestCase a new-style class.
  - Added placeless.py for Z3-style setup. Thanks to Whit Morriss.
  

Changed:
  U   Zope/trunk/lib/python/Testing/ZopeTestCase/__init__.py
  U   Zope/trunk/lib/python/Testing/ZopeTestCase/base.py
  U   Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt
  A   Zope/trunk/lib/python/Testing/ZopeTestCase/placeless.py
  A   Zope/trunk/lib/python/Testing/ZopeTestCase/testPlaceless.py
  U   Zope/trunk/lib/python/Testing/ZopeTestCase/zopedoctest/__init__.py

-=-
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/__init__.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/__init__.py	2006-03-27 01:29:02 UTC (rev 66218)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/__init__.py	2006-03-27 01:29:34 UTC (rev 66219)
@@ -51,6 +51,7 @@
 
 import zopedoctest as doctest
 import transaction
+import placeless
 
 Zope = Zope2
 

Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/base.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/base.py	2006-03-27 01:29:02 UTC (rev 66218)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/base.py	2006-03-27 01:29:34 UTC (rev 66219)
@@ -40,7 +40,7 @@
 
 
 
-class TestCase(profiler.Profiled, unittest.TestCase):
+class TestCase(profiler.Profiled, unittest.TestCase, object):
     '''Base test case for Zope testing
     '''
 

Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt	2006-03-27 01:29:02 UTC (rev 66218)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt	2006-03-27 01:29:34 UTC (rev 66219)
@@ -1,4 +1,4 @@
-Unreleased
+Zope 2.10 edition
 - transaction.commit(1) is deprecated in favor of transaction.savepoint().
 - Don't break if Python distros ship without profile support (Debian, Ubuntu).
 - Functional.publish() would hang if it got a request_method argument other
@@ -8,6 +8,8 @@
 - Made functional doctests set cookie related headers.
 - Made functional doctests set the Www-Authenticate header.
 - Made sure logging is configured. Read $INSTANCE_HOME/log.ini if it exists.
+- Made base.TestCase a new-style class.
+- Added placeless.py for Z3-style setup. Thanks to Whit Morriss.
 
 0.9.8 (Zope 2.8 edition)
 - Renamed 'doctest' package to 'zopedoctest' because of name-shadowing

Added: Zope/trunk/lib/python/Testing/ZopeTestCase/placeless.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/placeless.py	2006-03-27 01:29:02 UTC (rev 66218)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/placeless.py	2006-03-27 01:29:34 UTC (rev 66219)
@@ -0,0 +1,63 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation 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.
+#
+##############################################################################
+"""Placeless setup
+
+$Id$
+"""
+
+from zope.app.testing.placelesssetup import setUp, tearDown
+
+# For convenience
+from Products.Five import zcml
+
+
+def callZCML(zcml_callback):
+    if callable(zcml_callback):
+        zcml_callback()
+    else:
+        for func in zcml_callback:
+            func()
+
+
+def temporaryPlacelessSetUp(orig_func, placeless_available=True, required_zcml=[]):
+    '''A wrapper for test functions that require CA to be available and/or
+       some ZCML to be run during test fixture creation.
+    '''
+    if not placeless_available:
+        return orig_func
+
+    def wrapper(*args, **kw):
+        __doc__ = '''%s ::
+
+        @param required_zcml callback or iterable of callbacks
+        required for setup of configuration needed by fixture
+        creation.
+        ''' % orig_func.__doc__
+
+        # Setup the placeless stuff that's needed to create a fixture
+        setUp()
+
+        # Call any necessary callbacks for setting up ZCML
+        callZCML(required_zcml)
+        if kw.has_key('required_zcml'):
+            zcml = kw.pop('required_zcml')
+            callZCML(zcml)
+
+        value = orig_func(*args, **kw)
+
+        # And tear it down
+        tearDown()
+        return value
+
+    return wrapper
+


Property changes on: Zope/trunk/lib/python/Testing/ZopeTestCase/placeless.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Added: Zope/trunk/lib/python/Testing/ZopeTestCase/testPlaceless.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/testPlaceless.py	2006-03-27 01:29:02 UTC (rev 66218)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/testPlaceless.py	2006-03-27 01:29:34 UTC (rev 66219)
@@ -0,0 +1,97 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation 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.
+#
+##############################################################################
+"""Placeless setup tests
+
+$Id:$
+"""
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+
+from Testing.ZopeTestCase.placeless import setUp, tearDown
+from Testing.ZopeTestCase.placeless import zcml
+from Testing.ZopeTestCase.placeless import temporaryPlacelessSetUp
+
+import Products.Five.tests
+from Products.Five.tests.adapters import IAdapted
+from Products.Five.tests.adapters import Adaptable
+
+
+def setupZCML():
+    zcml.load_config('meta.zcml', Products.Five)
+    zcml.load_config('permissions.zcml', Products.Five)
+    zcml.load_config('directives.zcml', Products.Five.tests)
+
+
+class TestPlacelessSetUp(ZopeTestCase.ZopeTestCase):
+    '''Tests ZopeTestCase with placeless setup'''
+
+    def afterSetUp(self):
+        tearDown()
+
+    def beforeTearDown(self):
+        tearDown()
+
+    def testSimple(self):
+        # SetUp according to Five's adapter test
+        setUp()
+        setupZCML()
+        # Now we have a fixture that should work for adaptation
+        adapted = IAdapted(Adaptable())
+        self.assertEqual(adapted.adaptedMethod(), 'Adapted: The method')
+
+    def func(self, *args):
+        adapted = IAdapted(Adaptable())
+        return True
+
+    def testNoCA(self):
+        self.assertRaises(TypeError, self.func)
+
+    def testAvailableCA(self):
+        setUp()
+        setupZCML()
+        self.assertEqual(self.func(), True)
+
+    def testDecoratorLoadsZCMLCallable(self):
+        f = temporaryPlacelessSetUp(self.func, required_zcml=setupZCML)
+        self.assertEqual(f(), True)
+
+    def testDecoratorLoadsZCMLIterable(self):
+        f = temporaryPlacelessSetUp(self.func, required_zcml=(setupZCML,))
+        self.assertEqual(f(), True)
+
+    def testPlacelessFlagDisablesDecoration(self):
+        f = temporaryPlacelessSetUp(self.func, placeless_available=False, required_zcml=setupZCML)
+        self.assertRaises(TypeError, f)
+
+    def testDecoratedFuncLoadsZCMLCallable(self):
+        f = temporaryPlacelessSetUp(self.func)
+        self.assertEqual(f(required_zcml=setupZCML), True)
+
+    def testDecoratedFuncLoadsZCMLIterable(self):
+        f = temporaryPlacelessSetUp(self.func)
+        self.assertEqual(f(required_zcml=(setupZCML,)), True)
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestPlacelessSetUp))
+    return suite
+
+if __name__ == '__main__':
+    framework()
+


Property changes on: Zope/trunk/lib/python/Testing/ZopeTestCase/testPlaceless.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/zopedoctest/__init__.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/zopedoctest/__init__.py	2006-03-27 01:29:02 UTC (rev 66218)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/zopedoctest/__init__.py	2006-03-27 01:29:34 UTC (rev 66219)
@@ -16,5 +16,6 @@
 """
 
 from zope.testing.doctest import *
+from zope.testing.doctest import _normalize_module
 from functional import *
 



More information about the Zope-Checkins mailing list