[Zope3-checkins] CVS: Zope3/lib/python/Zope/Configuration/tests - testXML.py:1.5

R. David Murray bitz@bitdance.com
Fri, 8 Nov 2002 14:04:48 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/Configuration/tests
In directory cvs.zope.org:/tmp/cvs-serv2862

Modified Files:
	testXML.py 
Log Message:
Eliminate directive tests.  These tests were duplicates of the ones
in testDirectivesXML which tests them inside 'directives' directives.
Since we are eliminating the top level directive directive, we don't
need these tests anymore.

Rewrite the remaining tests (the include tests) to use python2.3-safe
tempfiles, with a 2.2 backward compatability hack.


=== Zope3/lib/python/Zope/Configuration/tests/testXML.py 1.4 => 1.5 ===
--- Zope3/lib/python/Zope/Configuration/tests/testXML.py:1.4	Thu Oct 17 09:31:58 2002
+++ Zope3/lib/python/Zope/Configuration/tests/testXML.py	Fri Nov  8 14:04:48 2002
@@ -13,148 +13,70 @@
 ##############################################################################
 import sys, unittest
 from cStringIO import StringIO
-from Zope.Configuration.xmlconfig import xmlconfig, ZopeXMLConfigurationError
+try: from tempfile import NamedTemporaryFile
+except ImportError:
+    # 2.2 backward compatability
+    from tempfile import mktemp
+    from os import remove
+    class NamedTemporaryFile:
+        def __init__(self):
+            self.file = open(mktemp(),'w')
+        def write(self,buffer): self.file.write(buffer)
+        def _name(self): return self.file.name
+        name = property(_name)
+        def flush(self): self.file.flush()
+        def close(self):
+            self.file.close()
+            remove(self.file.name)
+
+from Zope.Configuration.xmlconfig import xmlconfig
 from Zope.Configuration.xmlconfig import testxmlconfig
 from Zope.Configuration.meta import InvalidDirective, BrokenDirective
-from Zope.Configuration.tests.Directives import protections, done
-from Zope.Testing.CleanUp import CleanUp # Base class w registry cleanup
-
-template = """<zopeConfigure
-   xmlns='http://namespaces.zope.org/zope'
-   xmlns:test='http://www.zope.org/NS/Zope3/test'>
-   %s
-   %s
-   </zopeConfigure>"""
-
-
-ns='http://www.zope.org/NS/Zope3/test'
+from Zope.Testing.CleanUp import CleanUp
 
 class Test(CleanUp, unittest.TestCase):
         
-    def testDirective(self):
-        xmlconfig(StringIO(
-            template % (
-            '''<directive name="doit" namespace="%s"
-                          handler="Zope.Configuration.tests.Directives.doit" />
-                          ''' % ns,
-            '<test:doit name="splat" />'
-            )))
-
-        self.assertEqual(done, ['splat'])
-        
-    def testSimpleComplexDirective(self):
-        xmlconfig(StringIO(
-            template % (
-            '''<directive name="protectClass" namespace="%s"
-            handler="Zope.Configuration.tests.Directives.protectClass">
-                  <subdirective name="protect" namespace="%s" />
-               </directive>
-                          ''' % (ns, ns),
-            '''<test:protectClass
-              name=".Contact" permission="splat" names="update"
-              />'''
-            )))
-
-        self.assertEquals(protections, [(".Contact", "splat", 'update')])
-        
-    def testComplexDirective(self):
-        xmlconfig(StringIO(
-            template % (
-            '''<directive name="protectClass" namespace="%s"
-            handler="Zope.Configuration.tests.Directives.protectClass">
-                  <subdirective name="protect" namespace="%s" />
-               </directive>
-                          ''' % (ns, ns),
-            '''<test:protectClass name=".Contact">
-              <test:protect permission="edit" names='update' />
-              <test:protect permission="view" names='name email' />
-            </test:protectClass>'''
-            )))
-
-        self.assertEquals(protections, [
-            (".Contact", "edit", 'update'),
-            (".Contact", "view", 'name email'),
-            ])
-        
-    def testBadNoPrefixComplexDirective(self):
-
-        self.assertRaises(
-            InvalidDirective,
-            testxmlconfig,
-            StringIO(
-            template % (
-            '''<directive name="protectClass" namespace="%s"
-                   handler="Zope.Configuration.tests.Directives.protectClass">
-                  <subdirective name="protect" namespace="%s" />
-               </directive>
-                          ''' % (ns, ns),
-
-            '''<test:protectClass name=".Contact">
-              <test:protect permission="edit" names='update' />
-              <protect permission="view" names='name email' />
-              </test:protectClass>'''
-            )))
-        
-    def testBadPrefixComplexDirective(self):
-
-        try:
-            testxmlconfig(
-                StringIO(
-                template % (
-            '''<directive name="protectClass" namespace="%s"
-                   handler="Zope.Configuration.tests.Directives.protectClass">
-                  <subdirective name="protect" namespace="%s" />
-               </directive>
-                          ''' % (ns, ns),
-
-                '''<test:protectClass name=".Contact">
-                <test2:protect permission="edit" names='update' />
-                </test:protectClass>'''
-                )))
-        except InvalidDirective, v:
-            self.assertEqual(str(v), "(None, u'test2:protect')")
-        else:
-            self.fail('Should have raised ZopeXMLConfigurationError')
-
-
     def testInclude(self):
-        from tempfile import mktemp
-        name = mktemp()
-        open(name, 'w').write(
+        file = NamedTemporaryFile()
+        name = file.name
+        file.write(
             """<zopeConfigure xmlns='http://namespaces.zope.org/zope'>
-            <include package="Zope.Configuration.tests.Contact"
+                 <include
+                     package="Zope.Configuration.tests.Contact"
                      file="contact.zcml" />
-            </zopeConfigure>""")
-
+               </zopeConfigure>""")
+        file.flush()
         from Zope.Configuration.xmlconfig import XMLConfig
         x = XMLConfig(name)
         x()
-        import os
-        os.remove(name)
+        file.close()
 
     def testIncludeNoPackageAndIncluderNoPackage(self):
-        from tempfile import mktemp
         from os.path import split
-        full_name = mktemp()
-        full_name1 = mktemp()
+        file = NamedTemporaryFile()
+        full_name = file.name
+        file1 = NamedTemporaryFile()
+        full_name1 = file1.name
         name1 = split(full_name1)[-1]
         
-        open(full_name, 'w').write(
+        file.write(
             """<zopeConfigure xmlns='http://namespaces.zope.org/zope'>
-            <include file="%s" />
-            </zopeConfigure>""" % name1)
-        open(full_name1, 'w').write(
+                 <include file="%s" />
+               </zopeConfigure>""" % name1)
+        file.flush()
+        file1.write(
             """<zopeConfigure xmlns='http://namespaces.zope.org/zope'>
-            <include package="Zope.Configuration.tests.Contact"
+                 <include
+                     package="Zope.Configuration.tests.Contact"
                      file="contact.zcml" />
-            </zopeConfigure>""")
+               </zopeConfigure>""")
+        file1.flush()
         from Zope.Configuration.xmlconfig import XMLConfig
         x = XMLConfig(full_name)
         x()
-        import os
-        os.remove(full_name)
-        os.remove(full_name1)
-        
+
+        file.close()
+        file1.close()
 
 def test_suite():
     loader=unittest.TestLoader()