File: test_rzipfile.py

package info (click to toggle)
pypy 7.0.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 107,216 kB
  • sloc: python: 1,201,787; ansic: 62,419; asm: 5,169; cpp: 3,017; sh: 2,534; makefile: 545; xml: 243; lisp: 45; awk: 4
file content (50 lines) | stat: -rw-r--r-- 1,754 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import py

from rpython.rlib.rzipfile import RZipFile
from rpython.tool.udir import udir
from zipfile import ZIP_STORED, ZIP_DEFLATED, ZipInfo, ZipFile
from rpython.rtyper.test.tool import BaseRtypingTest
from rpython.rlib import clibffi # for side effect of testing lib_c_name on win32
import os
import time

try:
    from rpython.rlib import rzlib
except CompilationError as e:
    py.test.skip("zlib not installed: %s " % (e, ))

class BaseTestRZipFile(BaseRtypingTest):

    def setup_class(cls):
        tmpdir = udir.ensure('zipimport_%s' % cls.__name__, dir=1)
        zipname = str(tmpdir.join("somezip.zip"))
        cls.zipname = zipname
        zipfile = ZipFile(zipname, "w", compression=cls.compression)
        cls.year = time.localtime(time.time())[0]
        zipfile.writestr("one", "stuff\n")
        zipfile.writestr("dir" + os.path.sep + "two", "otherstuff")
        # Value selected to produce a CRC32 which is negative if
        # interpreted as a signed 32 bit integer.  This exercises the
        # masking behavior necessary on 64 bit platforms.
        zipfile.writestr("three", "hello, world")
        zipfile.close()

    def test_rzipfile(self):
        zipname = self.zipname
        year = self.year
        compression = self.compression
        def one():
            rzip = RZipFile(zipname, "r", compression)
            info = rzip.getinfo('one')
            return (info.date_time[0] == year and
                    rzip.read('one') == 'stuff\n' and
                    rzip.read('three') == 'hello, world')

        assert one()
        assert self.interpret(one, [])

class TestRZipFile(BaseTestRZipFile):
    compression = ZIP_STORED

class TestRZipFileCompressed(BaseTestRZipFile):
    compression = ZIP_DEFLATED