2
"""Test script for the gzip module.
6
from test import test_support
11
data1 = """ int length=DEFAULTALLOC, err = Z_OK;
13
int flushmode = Z_FINISH;
14
unsigned long start_total_out;
18
data2 = """/* zlibmodule.c -- gzip-compatible data compression */
19
/* See http://www.gzip.org/zlib/
20
/* See http://www.winimage.com/zLibDll for Windows */
24
class TestGzip(unittest.TestCase):
25
filename = test_support.TESTFN
28
test_support.unlink(self.filename)
31
test_support.unlink(self.filename)
35
f = gzip.GzipFile(self.filename, 'wb') ; f.write(data1 * 50)
37
# Try flush and fileno.
40
if hasattr(os, 'fsync'):
44
# Test multiple close() calls.
50
f = gzip.GzipFile(self.filename, 'r') ; d = f.read() ; f.close()
51
self.assertEqual(d, data1*50)
53
def test_append(self):
55
# Append to the previous file
56
f = gzip.GzipFile(self.filename, 'ab') ; f.write(data2 * 15) ; f.close()
58
f = gzip.GzipFile(self.filename, 'rb') ; d = f.read() ; f.close()
59
self.assertEqual(d, (data1*50) + (data2*15))
61
def test_many_append(self):
62
# Bug #1074261 was triggered when reading a file that contained
63
# many, many members. Create such a file and verify that reading it
65
f = gzip.open(self.filename, 'wb', 9)
68
for i in range(0,200):
69
f = gzip.open(self.filename, "ab", 9) # append
73
# Try reading the file
74
zgfile = gzip.open(self.filename, "rb")
77
ztxt = zgfile.read(8192)
81
self.assertEquals(contents, 'a'*201)
84
def test_readline(self):
86
# Try .readline() with varying line lengths
88
f = gzip.GzipFile(self.filename, 'rb')
91
L = f.readline(line_length)
92
if L == "" and line_length != 0: break
93
self.assert_(len(L) <= line_length)
94
line_length = (line_length + 1) % 50
97
def test_readlines(self):
101
f = gzip.GzipFile(self.filename, 'rb')
105
f = gzip.GzipFile(self.filename, 'rb')
111
def test_seek_read(self):
113
# Try seek, read test
115
f = gzip.GzipFile(self.filename)
121
f.seek(oldpos) # negative seek
126
line2 = f.read(amount)
127
self.assertEqual(line1[:amount], line2)
128
f.seek(newpos) # positive seek
131
def test_seek_whence(self):
133
# Try seek(whence=1), read test
135
f = gzip.GzipFile(self.filename)
140
self.assertEquals(y, data1[20:30])
142
def test_seek_write(self):
143
# Try seek, write test
144
f = gzip.GzipFile(self.filename, 'w')
145
for pos in range(0, 256, 16):
152
f = gzip.GzipFile(self.filename, 'r')
153
self.assertEqual(f.myfileobj.mode, 'rb')
156
def test_1647484(self):
157
for mode in ('wb', 'rb'):
158
f = gzip.GzipFile(self.filename, mode)
159
self.assert_(hasattr(f, "name"))
160
self.assertEqual(f.name, self.filename)
163
def test_main(verbose=None):
164
test_support.run_unittest(TestGzip)
166
if __name__ == "__main__":
167
test_main(verbose=True)