예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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
예제 #4
0
 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))
예제 #5
0
 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))
예제 #6
0
 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))
예제 #7
0
 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))
예제 #8
0
    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.")
예제 #9
0
    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.")
예제 #10
0
    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')
예제 #11
0
    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)
예제 #12
0
 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)