1  import zlib  
  2  import zipfile, os, StringIO, tempfile 
  3  try: 
  4    from test.test_support import TestFailed 
  5  except ImportError: 
  8  from translate.misc import zipfileext 
  9   
 10  BrokenStringIO = StringIO.StringIO 
 13      BrokenStringIO.truncate(self, size) 
 14      self.len = len(self.buf) 
  18 -def zipTest(srcname, f, compression, srccontents): 
  31   
 32 -def deleteTest(srcname, f, compression, srccontents): 
  33      zip = zipfileext.ZipFileExt(f, "w", compression)    
 34      othername = "another"+os.extsep+"name" 
 35      finalname = "adifferent"+os.extsep+"name" 
 36      leftname, deletenames = othername, [srcname, finalname] 
 37      zip.write(srcname, srcname) 
 38      zip.write(srcname, othername) 
 39      zip.write(srcname, finalname) 
 40      zip.close() 
 41   
 42      zip = zipfileext.ZipFileExt(f, "a", compression)    
 43      for deletename in deletenames: 
 44        zip.delete(deletename) 
 45      zip.close() 
 46   
 47      zip = zipfileext.ZipFileExt(f, "r", compression)    
 48      testfailed = zip.testzip() 
 49      readData = zip.read(leftname) 
 50      zip.close() 
 51   
 52      if testfailed: 
 53          raise TestFailed, "zip file didn't pass test" 
 54      if readData != srccontents: 
 55          raise TestFailed, "Written data doesn't equal read data." 
  56   
 58   
 60          print repr(method), dir(method) 
 61          self.srcname = self.__class__.__name__ + "_" + method.__name__ + os.extsep + "tmp" 
 62          self.zipname = self.__class__.__name__ + "_" + method.__name__ + os.extsep + "zip" 
 63          if os.path.exists(self.srcname): 
 64              os.remove(self.srcname) 
 65          if os.path.exists(self.zipname): 
 66              os.remove(self.zipname) 
  67   
 69          if os.path.exists(self.srcname):            
 70              os.unlink(self.srcname) 
 71          if os.path.exists(self.zipname): 
 72              os.unlink(self.zipname) 
  73   
 75          fp = open(self.srcname, "wb")                
 76          for i in range(0, 1000): 
 77              fp.write("Test of zipfile line %d.\n" % i) 
 78          fp.close() 
 79           
 80          fp = open(self.srcname, "rb") 
 81          writtenData = fp.read() 
 82          fp.close() 
 83           
 84          for file in (self.zipname, tempfile.TemporaryFile(), StringIO.StringIO()): 
 85              zipTest(self.srcname, file, zipfile.ZIP_STORED, writtenData) 
 86           
 87          for file in (self.zipname, tempfile.TemporaryFile(), StringIO.StringIO()): 
 88              zipTest(self.srcname, file, zipfile.ZIP_DEFLATED, writtenData) 
  89   
 91          fp = open(self.srcname, "wb")                
 92          for i in range(0, 1000): 
 93              fp.write("Test of zipfile line %d.\n" % i) 
 94          fp.close() 
 95           
 96          fp = open(self.srcname, "rb") 
 97          writtenData = fp.read() 
 98          fp.close() 
 99           
100          for file in (self.zipname, tempfile.TemporaryFile(), StringIO.StringIO()): 
101              deleteTest(self.srcname, file, zipfile.ZIP_STORED, writtenData) 
102           
103          for file in (self.zipname, tempfile.TemporaryFile(), StringIO.StringIO()): 
104              deleteTest(self.srcname, file, zipfile.ZIP_DEFLATED, writtenData) 
 105   
107           
108           
109           
110           
111           
112           
113          fp = open(self.srcname, "w") 
114          fp.write("this is not a legal zip file\n") 
115          fp.close() 
116          try: 
117              zf = zipfileext.ZipFileExt(self.srcname) 
118          except zipfile.BadZipfile: 
119              os.unlink(self.srcname) 
 120   
122           
123           
124           
125          try: 
126              zipfileext.ZipFileExt(self.srcname) 
127          except IOError: 
128               
129               
130               
131               
132               
133               
134               
135              pass 
136          else: 
137              raise TestFailed("expected creation of readable ZipFile without\n" 
138                               "  a file to raise an IOError.") 
 139   
 160