[Checkins] SVN: Zelenium/trunk/zuite.py fix so that tests do pass with Zope 2.10

Godefroid Chapelle gotcha at bubblenet.be
Fri Nov 17 09:04:28 EST 2006


Log message for revision 71152:
  fix so that tests do pass with Zope 2.10
  unicode is encoded to latin1 to ensure WinZip compatibility (according to python documentation)

Changed:
  U   Zelenium/trunk/zuite.py

-=-
Modified: Zelenium/trunk/zuite.py
===================================================================
--- Zelenium/trunk/zuite.py	2006-11-17 13:22:41 UTC (rev 71151)
+++ Zelenium/trunk/zuite.py	2006-11-17 14:04:28 UTC (rev 71152)
@@ -11,6 +11,7 @@
 from urllib import unquote
 import zipfile
 import StringIO
+import types
 
 from zope.interface import implements
 
@@ -24,7 +25,6 @@
 from OFS.Folder import Folder
 from OFS.Image import File
 from OFS.OrderedFolder import OrderedFolder
-from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
 from interfaces import IZuite
@@ -38,7 +38,11 @@
 _PINK_BACKGROUND = re.compile('bgcolor="#ffcfcf"')
 
 _EXCLUDE_NAMES = ( 'CVS', '.svn', '.objects' )
+        
+#winzip awaits latin1
+_DEFAULTENCODING = 'latin1'
 
+
 def _getNow():
     if _NOW is not None:
         return _NOW
@@ -464,8 +468,15 @@
         stream = StringIO.StringIO()
         archive = zipfile.ZipFile( stream, 'w' )
 
+
+        def convertToBytes(body):
+            if isinstance(body, types.UnicodeType):
+                return body.encode(_DEFAULTENCODING)
+            else:
+                return body
+
         archive.writestr( 'index.html'
-                        , self.index_html( suite_name='testSuite.html' ) )
+                        , convertToBytes(self.index_html( suite_name='testSuite.html' ) ) )
 
         test_cases = self.listTestCases()
 
@@ -490,7 +501,7 @@
                 _ensurePath( prefix, elements[ i ] )
 
         archive.writestr( 'testSuite.html'
-                        , self.test_suite_html( test_cases=test_cases ) )
+                        , convertToBytes(self.test_suite_html( test_cases=test_cases ) ) )
 
         for pathname, filenames in paths.items():
 
@@ -499,9 +510,8 @@
             else:
                 filename = '%s/.objects' % pathname
 
-            archive.writestr( filename
-                            , '\n'.join( filenames )
-                            )
+            archive.writestr( convertToBytes(filename)
+                            , convertToBytes(u'\n'.join( filenames ) ) )
 
         for info in test_cases:
             test_case = info[ 'test_case' ]
@@ -511,14 +521,14 @@
             else:
                 body = test_case.manage_FTPget()
 
-            archive.writestr( info[ 'path' ]
-                            , body
-                            )
+            archive.writestr( convertToBytes(info[ 'path' ])
+                            , convertToBytes(body) )
 
         if include_selenium:
 
             for k, v in _SUPPORT_FILES.items():
-                archive.writestr( k, v.__of__(self).manage_FTPget() )
+                archive.writestr( convertToBytes(k),
+                       convertToBytes(v.__of__(self).manage_FTPget() ) )
 
         archive.close()
         return stream.getvalue()



More information about the Checkins mailing list