[Checkins] SVN: zope.security/trunk/ Normalize testcase module-scope imports: test_directives.

Tres Seaver cvs-admin at zope.org
Fri Dec 21 01:58:25 UTC 2012


Log message for revision 128822:
  Normalize testcase module-scope imports:  test_directives.

Changed:
  _U  zope.security/trunk/
  U   zope.security/trunk/src/zope/security/tests/test_directives.py

-=-
Modified: zope.security/trunk/src/zope/security/tests/test_directives.py
===================================================================
--- zope.security/trunk/src/zope/security/tests/test_directives.py	2012-12-21 01:58:24 UTC (rev 128821)
+++ zope.security/trunk/src/zope/security/tests/test_directives.py	2012-12-21 01:58:25 UTC (rev 128822)
@@ -13,36 +13,23 @@
 ##############################################################################
 """Component Directives Tests
 """
-import re
 import unittest
-import pprint
-from cStringIO import StringIO
-from doctest import DocTestSuite
 
-import zope.component
-from zope.interface import implementer
-from zope.component.interface import queryInterface
 
-try:
-    from zope.configuration.xmlconfig import xmlconfig, XMLConfig
-    from zope.configuration.xmlconfig import ZopeXMLConfigurationError
-except ImportError:
-    HAVE_ZCML = False
-else:
-    HAVE_ZCML = True
+def _skip_wo_zope_configuration(testfunc):
+    try:
+        import zope.configuration.xmlconfig
+    except ImportError:
+        from functools import update_wrapper
+        def dummy(self):
+            pass
+        update_wrapper(dummy, testfunc)
+        return dummy
+    else:
+        return testfunc
 
-from zope.security.checker import selectChecker
-from zope.security import proxy
 
-import zope.security
-from zope.component.testing import PlacelessSetup
 
-from zope.security.tests import module, exampleclass
-
-# TODO: tests for other directives needed
-
-atre = re.compile(' at [0-9a-fA-Fx]+')
-
 class Context(object):
     actions = ()
 
@@ -50,6 +37,10 @@
         self.actions += ((discriminator, callable, args), )
 
     def __repr__(self):
+        from cStringIO import StringIO
+        import re
+        import pprint
+        atre = re.compile(' at [0-9a-fA-Fx]+')
         stream = StringIO()
         pprinter = pprint.PrettyPrinter(stream=stream, width=60)
         pprinter.pprint(self.actions)
@@ -64,18 +55,9 @@
    %s
    </configure>"""
 
-def definePermissions():
-    XMLConfig('meta.zcml', zope.security)()
 
-
-class ParticipationStub(object):
-
-    def __init__(self, principal):
-        self.principal = principal
-        self.interaction = None
-
-
 def configfile(s):
+    from cStringIO import StringIO
     return StringIO("""<configure
       xmlns='http://namespaces.zope.org/zope'
       i18n_domain='zope'>
@@ -83,12 +65,36 @@
       </configure>
       """ % s)
 
-class TestFactoryDirective(PlacelessSetup, unittest.TestCase):
+class TestFactoryDirective(unittest.TestCase):
+
     def setUp(self):
-        super(TestFactoryDirective, self).setUp()
+        try:
+            from zope.component.testing import setUp
+        except ImportError:
+            pass
+        else:
+            setUp()
+
+    def tearDown(self):
+        try:
+            from zope.component.testing import tearDown
+        except ImportError:
+            pass
+        else:
+            tearDown()
+
+    def meta(self):
+        import zope.security
+        from zope.configuration.xmlconfig import XMLConfig
         XMLConfig('meta.zcml', zope.security)()
 
+    @_skip_wo_zope_configuration
     def testFactory(self):
+        from zope.component import createObject
+        from zope.configuration.xmlconfig import xmlconfig
+        from zope.security import proxy
+        from zope.security.tests import exampleclass
+        self.meta()
         f = configfile('''
 <permission id="zope.Foo" title="Zope Foo Permission" />
 <class class="zope.security.tests.exampleclass.ExampleClass">
@@ -99,14 +105,20 @@
        />
 </class>''')
         xmlconfig(f)
-        obj = zope.component.createObject('test.Example')
+        obj = createObject('test.Example')
         self.failUnless(proxy.isinstance(obj, exampleclass.ExampleClass))
 
 
 
-PREFIX = module.__name__ + '.'
+def _pfx(name):
+    from zope.security.tests import module
+    return module.__name__ + '.' + name
 
 def defineDirectives():
+    from cStringIO import StringIO
+    from zope.configuration.xmlconfig import XMLConfig
+    from zope.configuration.xmlconfig import xmlconfig
+    import zope.security
     XMLConfig('meta.zcml', zope.security)()
     xmlconfig(StringIO("""<configure
         xmlns='http://namespaces.zope.org/zope'
@@ -120,10 +132,17 @@
 P1 = "zope.Extravagant"
 P2 = "zope.Paltry"
 
-class TestRequireDirective(PlacelessSetup, unittest.TestCase):
+class TestRequireDirective(unittest.TestCase):
 
     def setUp(self):
-        super(TestRequireDirective, self).setUp()
+        from zope.interface import implementer
+        from zope.security.tests import module
+        try:
+            from zope.component.testing import setUp
+        except ImportError:
+            pass
+        else:
+            setUp()
         defineDirectives()
 
         class B(object):
@@ -143,38 +162,46 @@
         self.assertState()
 
     def tearDown(self):
-        PlacelessSetup.tearDown(self)
+        from zope.security.tests import module
         module.test_class = None
+        try:
+            from zope.component.testing import tearDown
+        except ImportError:
+            pass
+        else:
+            tearDown()
 
     def assertState(self, m1P=NOTSET, m2P=NOTSET, m3P=NOTSET):
-        "Verify that class, instance, and methods have expected permissions."
-
+        #Verify that class, instance, and methods have expected permissions
+        from zope.security.checker import selectChecker
+        from zope.security.tests import module
         checker = selectChecker(module.test_instance)
         self.assertEqual(checker.permission_id('m1'), (m1P or None))
         self.assertEqual(checker.permission_id('m2'), (m2P or None))
         self.assertEqual(checker.permission_id('m3'), (m3P or None))
 
     def assertDeclaration(self, declaration, **state):
+        from zope.security.tests import module
         apply_declaration(module.template_bracket % declaration)
         self.assertState(**state)
 
     # "testSimple*" exercises tags that do NOT have children.  This mode
     # inherently sets the instances as well as the class attributes.
 
+    @_skip_wo_zope_configuration
     def testSimpleMethodsPlural(self):
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 attributes="m1 m3"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1))
+                       % (_pfx("test_class"), P1))
         self.assertDeclaration(declaration, m1P=P1, m3P=P1)
 
     def assertSetattrState(self, m1P=NOTSET, m2P=NOTSET, m3P=NOTSET):
-        "Verify that class, instance, and methods have expected permissions."
-
+        # Verify that class, instance, and methods have expected permissions
         from zope.security.checker import selectChecker
-
+        from zope.security.tests import module
         checker = selectChecker(module.test_instance)
         self.assertEqual(checker.setattr_permission_id('m1'), (m1P or None))
         self.assertEqual(checker.setattr_permission_id('m2'), (m2P or None))
@@ -183,32 +210,38 @@
     def assertSetattrDeclaration(self, declaration, **state):
         self.assertSetattrState(**state)
 
+    @_skip_wo_zope_configuration
     def test_set_attributes(self):
+        from zope.security.checker import selectChecker
+        from zope.security.tests import module
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 set_attributes="m1 m3"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1))
+                       % (_pfx("test_class"), P1))
         apply_declaration(module.template_bracket % declaration)
         checker = selectChecker(module.test_instance)
         self.assertEqual(checker.setattr_permission_id('m1'), P1)
         self.assertEqual(checker.setattr_permission_id('m2'), None)
         self.assertEqual(checker.setattr_permission_id('m3'), P1)
 
+    @_skip_wo_zope_configuration
     def test_set_schema(self):
+        from zope.component.interface import queryInterface
+        from zope.security.checker import selectChecker
+        from zope.security.tests import module
+        self.assertEqual(queryInterface(_pfx("S")), None)
 
-        self.assertEqual(queryInterface(PREFIX+"S"), None)
-
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 set_schema="%s"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1, PREFIX+"S"))
+                       % (_pfx("test_class"), P1, _pfx("S")))
         apply_declaration(module.template_bracket % declaration)
 
-        self.assertEqual(queryInterface(PREFIX+"S"), module.S)
+        self.assertEqual(queryInterface(_pfx("S")), module.S)
 
 
         checker = selectChecker(module.test_instance)
@@ -219,21 +252,24 @@
         self.assertEqual(checker.setattr_permission_id('bar'), P1)
         self.assertEqual(checker.setattr_permission_id('baro'), None)
 
+    @_skip_wo_zope_configuration
     def test_multiple_set_schema(self):
+        from zope.component.interface import queryInterface
+        from zope.security.checker import selectChecker
+        from zope.security.tests import module
+        self.assertEqual(queryInterface(_pfx("S")), None)
+        self.assertEqual(queryInterface(_pfx("S2")), None)
 
-        self.assertEqual(queryInterface(PREFIX+"S"), None)
-        self.assertEqual(queryInterface(PREFIX+"S2"), None)
-
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 set_schema="%s %s"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1, PREFIX+"S", PREFIX+"S2"))
+                       % (_pfx("test_class"), P1, _pfx("S"), _pfx("S2")))
         apply_declaration(module.template_bracket % declaration)
 
-        self.assertEqual(queryInterface(PREFIX+"S"), module.S)
-        self.assertEqual(queryInterface(PREFIX+"S2"), module.S2)
+        self.assertEqual(queryInterface(_pfx("S")), module.S)
+        self.assertEqual(queryInterface(_pfx("S2")), module.S2)
 
 
         checker = selectChecker(module.test_instance)
@@ -246,90 +282,100 @@
         self.assertEqual(checker.setattr_permission_id('bar2'), P1)
         self.assertEqual(checker.setattr_permission_id('baro'), None)
 
+    @_skip_wo_zope_configuration
     def testSimpleInterface(self):
+        from zope.component.interface import queryInterface
+        from zope.security.tests import module
+        self.assertEqual(queryInterface(_pfx("I")), None)
 
-        self.assertEqual(queryInterface(PREFIX+"I"), None)
-
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 interface="%s"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1, PREFIX+"I"))
+                       % (_pfx("test_class"), P1, _pfx("I")))
         # m1 and m2 are in the interface, so should be set, and m3 should not:
         self.assertDeclaration(declaration, m1P=P1, m2P=P1)
 
         # Make sure we know about the interfaces
-        self.assertEqual(queryInterface(PREFIX+"I"), module.I)
+        self.assertEqual(queryInterface(_pfx("I")), module.I)
 
 
+    @_skip_wo_zope_configuration
     def testMultipleInterface(self):
+        from zope.component.interface import queryInterface
+        from zope.security.tests import module
+        self.assertEqual(queryInterface(_pfx("I3")), None)
+        self.assertEqual(queryInterface(_pfx("I4")), None)
 
-        self.assertEqual(queryInterface(PREFIX+"I3"), None)
-        self.assertEqual(queryInterface(PREFIX+"I4"), None)
-
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 interface="  %s
                                              %s  "/>
                           </class>'''
-                       % (PREFIX+"test_class", P1, PREFIX+"I3", PREFIX+"I4"))
+                       % (_pfx("test_class"), P1, _pfx("I3"), _pfx("I4")))
         self.assertDeclaration(declaration, m3P=P1, m2P=P1)
 
         # Make sure we know about the interfaces
-        self.assertEqual(queryInterface(PREFIX+"I3"), module.I3)
-        self.assertEqual(queryInterface(PREFIX+"I4"), module.I4)
+        self.assertEqual(queryInterface(_pfx("I3")), module.I3)
+        self.assertEqual(queryInterface(_pfx("I4")), module.I4)
 
     # "testComposite*" exercises tags that DO have children.
     # "testComposite*TopPerm" exercises tags with permission in containing tag.
     # "testComposite*ElementPerm" exercises tags w/permission in children.
 
+    @_skip_wo_zope_configuration
     def testCompositeNoPerm(self):
         # Establish rejection of declarations lacking a permission spec.
+        from zope.configuration.xmlconfig import ZopeXMLConfigurationError
         declaration = ('''<class class="%s">
                             <require
                                 attributes="m1"/>
                           </class>'''
-                       % (PREFIX+"test_class"))
+                       % (_pfx("test_class")))
         self.assertRaises(ZopeXMLConfigurationError,
                           self.assertDeclaration,
                           declaration)
 
 
 
+    @_skip_wo_zope_configuration
     def testCompositeMethodsPluralElementPerm(self):
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 attributes="m1 m3"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1))
+                       % (_pfx("test_class"), P1))
         self.assertDeclaration(declaration,
                                m1P=P1, m3P=P1)
 
+    @_skip_wo_zope_configuration
     def testCompositeInterfaceTopPerm(self):
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 interface="%s"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1, PREFIX+"I"))
+                       % (_pfx("test_class"), P1, _pfx("I")))
         self.assertDeclaration(declaration,
                                m1P=P1, m2P=P1)
 
 
+    @_skip_wo_zope_configuration
     def testSubInterfaces(self):
         declaration = ('''<class class="%s">
                             <require
                                 permission="%s"
                                 interface="%s"/>
                           </class>'''
-                       % (PREFIX+"test_class", P1, PREFIX+"I2"))
+                       % (_pfx("test_class"), P1, _pfx("I2")))
         # m1 and m2 are in the interface, so should be set, and m3 should not:
         self.assertDeclaration(declaration, m1P=P1, m2P=P1)
 
 
+    @_skip_wo_zope_configuration
     def testMimicOnly(self):
         declaration = ('''<class class="%s">
                             <require
@@ -339,13 +385,14 @@
                           <class class="%s">
                             <require like_class="%s" />
                           </class>
-                          ''' % (PREFIX+"test_base", P1,
-                PREFIX+"test_class", PREFIX+"test_base"))
+                          ''' % (_pfx("test_base"), P1,
+                _pfx("test_class"), _pfx("test_base")))
         # m1 and m2 are in the interface, so should be set, and m3 should not:
         self.assertDeclaration(declaration,
                                m1P=P1, m2P=P1)
 
 
+    @_skip_wo_zope_configuration
     def testMimicAsDefault(self):
         declaration = ('''<class class="%s">
                             <require
@@ -358,8 +405,8 @@
                                 permission="%s"
                                 attributes="m2 m3"/>
                           </class>
-                          ''' % (PREFIX+"test_base", P1,
-                PREFIX+"test_class", PREFIX+"test_base", P2))
+                          ''' % (_pfx("test_base"), P1,
+                _pfx("test_class"), _pfx("test_base"), P2))
 
         # m1 and m2 are in the interface, so should be set, and m3 should not:
         self.assertDeclaration(declaration,
@@ -368,15 +415,13 @@
 
 def apply_declaration(declaration):
     '''Apply the xmlconfig machinery.'''
+    from cStringIO import StringIO
+    from zope.configuration.xmlconfig import xmlconfig
     return xmlconfig(StringIO(declaration))
 
 
 def test_suite():
-    if not HAVE_ZCML:
-        return unittest.TestSuite()
-
     return unittest.TestSuite((
         unittest.makeSuite(TestFactoryDirective),
         unittest.makeSuite(TestRequireDirective),
-        DocTestSuite(),
-        ))
+    ))



More information about the checkins mailing list