def test_unzip(self): """ L{twisted.python.zipstream.unzip} should extract all files from a zip archive """ numfiles = 3 zpfilename = self.makeZipFile([''] * numfiles) zipstream.unzip(zpfilename, self.unzipdir.path) self.assertEquals(len(list(self.unzipdir.children())), numfiles)
def test_complex(self): old_stdout = sys.stdout sys.stdout = StringIO() zf = util.sibpath(__file__, "data/test_fmlang.zip") zipstream.unzip(zf) scr = inno.Script(name="complex", display_name="Complex Script", package_version="1.1.1") scr.collect('.', exclude_globs=('test.log', )) scr.compile() sys.stdout = old_stdout
def test_unzip(self): """ L{twisted.python.zipstream.unzip} should extract all files from a zip archive """ numfiles = 3 zpfilename = self.makeZipFile([str(i) for i in range(numfiles)]) zipstream.unzip(zpfilename, self.unzipdir.path) self.assertEqual(set(self.unzipdir.listdir()), set(map(str, range(numfiles)))) for i in range(numfiles): self.assertEqual(self.unzipdir.child(str(i)).getContent(), str(i))
def test_unzip(self): """ L{twisted.python.zipstream.unzip} should extract all files from a zip archive """ numfiles = 3 zpfilename = self.makeZipFile([str(i) for i in range(numfiles)]) zipstream.unzip(zpfilename, self.unzipdir.path) self.assertEqual( set(self.unzipdir.listdir()), set(map(str, range(numfiles)))) for i in range(numfiles): self.assertEqual(self.unzipdir.child(str(i)).getContent(), str(i))
def test_unzipDirectory(self): """ The path to which a file is extracted by L{zipstream.unzip} is determined by joining the C{directory} argument to C{unzip} with the path within the archive of the file being extracted. """ numfiles = 3 zpfilename = self.makeZipFile([str(i) for i in range(numfiles)], 'foo') zipstream.unzip(zpfilename, self.unzipdir.path) self.assertEqual(set(self.unzipdir.child('foo').listdir()), set(map(str, range(numfiles)))) for i in range(numfiles): self.assertEqual( self.unzipdir.child('foo').child(str(i)).getContent(), str(i))
def test_unzipDirectory(self): """ The path to which a file is extracted by L{zipstream.unzip} is determined by joining the C{directory} argument to C{unzip} with the path within the archive of the file being extracted. """ numfiles = 3 zpfilename = self.makeZipFile([str(i) for i in range(numfiles)], 'foo') zipstream.unzip(zpfilename, self.unzipdir.path) self.assertEqual( set(self.unzipdir.child('foo').listdir()), set(map(str, range(numfiles)))) for i in range(numfiles): self.assertEqual( self.unzipdir.child('foo').child(str(i)).getContent(), str(i))
def test_unzipDeprecated(self): """ Use of C{twisted.python.zipstream.unzip} will emit a deprecated warning. """ zpfilename = self.makeZipFile('foo') self.assertEqual(len(self.flushWarnings()), 0) zipstream.unzip(zpfilename, self.unzipdir.path) warnings = self.flushWarnings() self.assertEqual(len(warnings), 1) self.assertEqual(warnings[0]['category'], DeprecationWarning) self.assertEqual( warnings[0]['message'], "zipstream.unzip is deprecated since Twisted 11.0.0 for " "security reasons. Use Python's zipfile instead.")
def test_overwrite(self): """ L{twisted.python.zipstream.unzip} and L{twisted.python.zipstream.unzipIter} shouldn't overwrite files unless the 'overwrite' flag is passed """ testfile = self.unzipdir.child('0') zpfilename = self.makeZipFile(['OVERWRITTEN']) testfile.setContent('NOT OVERWRITTEN') zipstream.unzip(zpfilename, self.unzipdir.path) self.assertEquals(testfile.open().read(), 'NOT OVERWRITTEN') zipstream.unzip(zpfilename, self.unzipdir.path, overwrite=True) self.assertEquals(testfile.open().read(), 'OVERWRITTEN') testfile.setContent('NOT OVERWRITTEN') uziter = zipstream.unzipIter(zpfilename, self.unzipdir.path) uziter.next() self.assertEquals(testfile.open().read(), 'NOT OVERWRITTEN') uziter = zipstream.unzipIter(zpfilename, self.unzipdir.path, overwrite=True) uziter.next() self.assertEquals(testfile.open().read(), 'OVERWRITTEN')
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<r<45 self.failUnless(approx) for r in uziter: pass self.assertEqual(r, 0) newmd5=newsum('zipstreamjunk') self.assertEqual(newmd5, junkmd5) self.cleanupUnzippedJunk() uziter=zipstream.unzipIterChunky('bigfile_deflated.zip', chunksize=972) r=uziter.next() approx = 23<r<27 self.failUnless(approx) for r in uziter: pass self.assertEqual(r, 0) newmd5=newsum('zipstreamjunk') self.assertEqual(newmd5, junkmd5)
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) 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() approx = 35<r<45 self.failUnless(approx) for r in uziter: pass self.assertEqual(r, 0) newmd5=newsum('zipstreamjunk') self.assertEqual(newmd5, junkmd5) self.cleanupUnzippedJunk() uziter=zipstream.unzipIterChunky('bigfile_deflated.zip', chunksize=972) r=uziter.next() approx = 23<r<27 self.failUnless(approx) for r in uziter: pass self.assertEqual(r, 0) newmd5=newsum('zipstreamjunk') self.assertEqual(newmd5, junkmd5)