import random import md5 import zipfile import os.path import shutil from twisted.python import zipstream from twisted.trial import unittest # create some stuff that can be compressed junk=' '.join([str(random.random()) for n in xrange(1000)]) junkmd5=md5.new(junk).hexdigest() class ZipstreamTest(unittest.TestCase): """""" def test_unzipping(self): self.makeZipFiles() zipstream.unzip('littlefiles.zip') self.failUnless(os.path.isfile('zipstreamdir/937')) self.cleanupUnzippedJunk() uziter=zipstream.unzipIter('littlefiles.zip') r=uziter.next() self.assertEqual(r, 999) for r in uziter: pass self.assertEqual(r, 0) # test that files don't get overwritten unless you tell it to # do so # overwrite zipstreamjunk with some different contents stuff('zipstreamjunk', 'stuff') zipstream.unzip('bigfile.zip') newmd5=newsum('zipstreamjunk') self.assertEqual(newmd5, 'c13d88cb4cb02003daedb8a84e5d272a') zipstream.unzip('bigfile.zip', overwrite=1) newmd5=newsum('zipstreamjunk') self.assertEqual(newmd5, junkmd5) self.cleanupUnzippedJunk() uziter=zipstream.unzipIterChunky('bigfile.zip', chunksize=500) r=uziter.next() # test that the number of chunks is in the right ballpark; # this could theoretically be any number but statistically it # should always be in this range approx = 35