[Zope-CVS] CVS: Products/Zelenium/tests - test_zuite.py:1.5

Tres Seaver tseaver at palladion.com
Mon May 9 14:50:59 EDT 2005


Update of /cvs-repository/Products/Zelenium/tests
In directory cvs.zope.org:/tmp/cvs-serv25227/tests

Modified Files:
	test_zuite.py 
Log Message:
 - Add support for ordering / globbing test cases / subdirs.


=== Products/Zelenium/tests/test_zuite.py 1.4 => 1.5 ===
--- Products/Zelenium/tests/test_zuite.py:1.4	Sat May  7 16:33:25 2005
+++ Products/Zelenium/tests/test_zuite.py	Mon May  9 14:50:29 2005
@@ -83,9 +83,18 @@
         import zipfile
         stream = StringIO.StringIO( bits )
         archive = zipfile.ZipFile( stream, 'r' )
-        names = archive.namelist()
 
-        self.assertEqual( len( contents ), len( names ), (contents, names) )
+        names = list( archive.namelist() )
+        names.sort()
+        contents = list( contents )
+        contents.sort()
+
+        self.assertEqual( len( contents ), len( names ),
+                          "\n==========\n%s\n==========\n%s\n==========\n"
+                            % ( '\n'.join( contents )
+                              , '\n'.join( names )
+                              )
+                        )
 
         for name in names:
             if name not in contents:
@@ -95,6 +104,19 @@
             if name not in names:
                 raise AssertionError, 'Missing name in archive: %s' % name
 
+    def _verifyManifest( self, bits, name, contents ):
+
+        import StringIO
+        import zipfile
+        stream = StringIO.StringIO( bits )
+        archive = zipfile.ZipFile( stream, 'r' )
+
+        manifest = filter( None, archive.read( name ).split( '\n' ) )
+        self.assertEqual( len( manifest ), len( contents ) )
+
+        for lhs, rhs in zip( manifest, contents ):
+            self.assertEqual( lhs, rhs )
+
     def _listDefaultArchiveNames( self ):
 
         from Products.Zelenium.zuite import _SUPPORT_FILES
@@ -137,7 +159,7 @@
         except KeyError:
             pass
         else:
-            assert 0, "__getitem__ didn't raise: %s" % _KEY
+            self.fail( "__getitem__ didn't raise: %s" % _KEY )
 
         zuite._setObject( _KEY, self._makeFile( _KEY ) )
         object = zuite[ _KEY ]
@@ -191,6 +213,35 @@
             object = proxy[ name ]
             self.assertEqual( object.meta_type, 'File' )
 
+    def test___getitem___filesystem_filtered( self ):
+
+        import os
+        from Globals import package_home
+
+        zuite = self._makeOne()
+        zuite._updateProperty( 'filesystem_path'
+                             , os.path.join( package_home( globals() )
+                                           , 'filters'
+                                           )
+                             )
+
+        zuite._updateProperty( 'filename_glob'
+                             , 'test_*.html'
+                             )
+
+        try:
+            excluded = zuite[ 'exclude_me.html' ]
+        except KeyError:
+            pass
+        else:
+            self.fail( "Didn't exclude 'exclude_me.html'." )
+
+        for name in ( 'test_one.html'
+                    , 'test_another.html'
+                    ):
+            object = zuite[ name ]
+            self.assertEqual( object.meta_type, 'File' )
+
     def test_listTestCases_simple( self ):
 
         _TEST_IDS = ( 'test_one'
@@ -295,6 +346,64 @@
         self.failUnless( 'test_one.html' in case_ids )
         self.failUnless( 'test_another.html' in case_ids )
 
+    def test_listTestCases_filesystem_ordered_default( self ):
+
+        # By default, sort alphabetically.
+        import os
+        from Globals import package_home
+
+        zuite = self._makeOne()
+        zuite._updateProperty( 'filesystem_path'
+                             , os.path.join( package_home( globals() )
+                                           , 'ordered'
+                                           , 'default'
+                                           )
+                             )
+        cases = zuite.listTestCases()
+        self.assertEqual( len( cases ), 2 )
+        case_ids = [ x[ 'id' ] for x in cases ]
+        self.assertEqual( case_ids[ 0 ], 'test_alpha.html' )
+        self.assertEqual( case_ids[ 1 ], 'test_beta.html' )
+
+    def test_listTestCases_filesystem_ordered_explicit( self ):
+
+        # Use the ordering specified in '.objects'.
+        import os
+        from Globals import package_home
+
+        zuite = self._makeOne()
+        zuite._updateProperty( 'filesystem_path'
+                             , os.path.join( package_home( globals() )
+                                           , 'ordered'
+                                           , 'explicit'
+                                           )
+                             )
+        cases = zuite.listTestCases()
+        self.assertEqual( len( cases ), 2 )
+        case_ids = [ x[ 'id' ] for x in cases ]
+        self.assertEqual( case_ids[ 0 ], 'test_beta.html' )
+        self.assertEqual( case_ids[ 1 ], 'test_alpha.html' )
+
+    def test_listTestCases_filesystem_recursive_explicit( self ):
+
+        import os
+        from Globals import package_home
+
+        zuite = self._makeOne()
+        zuite._updateProperty( 'filesystem_path'
+                             , os.path.join( package_home( globals() )
+                                           , 'fussy'
+                                           )
+                             )
+        cases = zuite.listTestCases()
+        case_ids = [ x[ 'id' ] for x in cases ]
+        self.assertEqual( len( case_ids ), 5, case_ids )
+        self.assertEqual( case_ids[ 0 ], 'test_niece1.html' )
+        self.assertEqual( case_ids[ 1 ], 'test_niece2.html' )
+        self.assertEqual( case_ids[ 2 ], 'test_uncle.html' )
+        self.assertEqual( case_ids[ 3 ], 'test_nephew2.html' )
+        self.assertEqual( case_ids[ 4 ], 'test_nephew1.html' )
+
     def test_getZipFileName( self ):
 
         _ID = 'gzf'
@@ -322,7 +431,10 @@
         self.assertEqual( response._headers[ 'Content-length' ]
                         , str( len( response._body ) ) )
 
-        self._verifyArchive( response._body, self._listDefaultArchiveNames() )
+        expected = self._listDefaultArchiveNames()
+        expected.append( '.objects' )
+        self._verifyArchive( response._body, expected )
+        self._verifyManifest( response._body, '.objects', [] )
 
     def test_manage_getZipFile_default_name( self ):
 
@@ -346,8 +458,11 @@
                         , str( len( response._body ) ) )
 
         expected = self._listDefaultArchiveNames()
-        expected.append( '%s.html' % _FILENAME )
+        expected.append( '.objects' )
+        filename = '%s.html' % _FILENAME
+        expected.append( filename )
         self._verifyArchive( response._body, expected )
+        self._verifyManifest( response._body, '.objects', [ filename ] )
 
     def test_manage_getZipFile_recursive( self ):
 
@@ -384,14 +499,26 @@
                         , str( len( response._body ) ) )
 
         expected = self._listDefaultArchiveNames()
+        expected.append( '.objects' )
+        expected.append( 'sub/.objects' )
 
+        top_level = []
         for test_id in _TEST_IDS:
-            expected.append( '%s.html' % test_id )
+            filename = '%s.html' % test_id 
+            expected.append( filename )
+            top_level.append( filename )
+
+        top_level.append( 'sub' )
 
+        sub_level = []
         for sub_id in _SUB_IDS:
-            expected.append( 'sub/%s.html' % sub_id )
+            filename = '%s.html' % sub_id
+            expected.append( 'sub/%s' % filename )
+            sub_level.append( filename )
 
         self._verifyArchive( response._body, expected )
+        self._verifyManifest( response._body, '.objects', top_level )
+        self._verifyManifest( response._body, 'sub/.objects', sub_level )
 
     def test_manage_createSnapshot_empty( self ):
 
@@ -405,7 +532,9 @@
         self.failUnless( _ARCHIVE_NAME in object_ids )
 
         archive = zuite._getOb( _ARCHIVE_NAME )
-        self._verifyArchive( archive.data, self._listDefaultArchiveNames() )
+        expected = self._listDefaultArchiveNames()
+        expected.append( '.objects' )
+        self._verifyArchive( archive.data, expected )
 
     def test_manage_createSnapshot_default_name( self ):
 
@@ -426,6 +555,7 @@
         self.failUnless( expected_id in object_ids )
 
         expected = self._listDefaultArchiveNames()
+        expected.append( '.objects' )
         expected.append( '%s.html' % _FILENAME )
         archive = zuite._getOb( expected_id )
         self._verifyArchive( archive.data, expected )
@@ -461,6 +591,8 @@
 
         archive = zuite._getOb( _ARCHIVE_NAME )
         expected = self._listDefaultArchiveNames()
+        expected.append( '.objects' )
+        expected.append( 'sub/.objects' )
 
         for test_id in _TEST_IDS:
             expected.append( '%s.html' % test_id )



More information about the Zope-CVS mailing list