diff options
-rw-r--r-- | Lib/test/test_gzip.py | 184 |
1 files changed, 110 insertions, 74 deletions
diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index 41abc5a..9e5cb03 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -1,8 +1,12 @@ -from test.test_support import verify, TESTFN +#! /usr/bin/env python +"""Test script for the gzip module. +""" + +import unittest +from test import test_support import sys, os import gzip -filename = TESTFN data1 = """ int length=DEFAULTALLOC, err = Z_OK; PyObject *RetVal; @@ -16,75 +20,107 @@ data2 = """/* zlibmodule.c -- gzip-compatible data compression */ /* See http://www.winimage.com/zLibDll for Windows */ """ -f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) - -# Try flush and fileno. -f.flush() -f.fileno() -if hasattr(os, 'fsync'): - os.fsync(f.fileno()) -f.close() - -# Try reading. -f = gzip.GzipFile(filename, 'r') ; d = f.read() ; f.close() -verify(d == data1*50) - -# Append to the previous file -f = gzip.GzipFile(filename, 'ab') ; f.write(data2 * 15) ; f.close() - -f = gzip.GzipFile(filename, 'rb') ; d = f.read() ; f.close() -verify(d == (data1*50) + (data2*15)) - -# Try .readline() with varying line lengths - -f = gzip.GzipFile(filename, 'rb') -line_length = 0 -while 1: - L = f.readline(line_length) - if L == "" and line_length != 0: break - verify(len(L) <= line_length) - line_length = (line_length + 1) % 50 -f.close() - -# Try .readlines() - -f = gzip.GzipFile(filename, 'rb') -L = f.readlines() -f.close() - -f = gzip.GzipFile(filename, 'rb') -while 1: - L = f.readlines(150) - if L == []: break -f.close() - -# Try seek, read test - -f = gzip.GzipFile(filename) -while 1: - oldpos = f.tell() - line1 = f.readline() - if not line1: break - newpos = f.tell() - f.seek(oldpos) # negative seek - if len(line1)>10: - amount = 10 - else: - amount = len(line1) - line2 = f.read(amount) - verify(line1[:amount] == line2) - f.seek(newpos) # positive seek -f.close() - -# Try seek, write test -f = gzip.GzipFile(filename, 'w') -for pos in range(0, 256, 16): - f.seek(pos) - f.write('GZ\n') -f.close() - -f = gzip.GzipFile(filename, 'r') -verify(f.myfileobj.mode == 'rb') -f.close() - -os.unlink(filename) + +class TestGzip(unittest.TestCase): + filename = test_support.TESTFN + + def setUp (self): + pass + + def tearDown (self): + try: + os.unlink(self.filename) + except os.error: + pass + + + def test_write (self): + f = gzip.GzipFile(self.filename, 'wb') ; f.write(data1 * 50) + + # Try flush and fileno. + f.flush() + f.fileno() + if hasattr(os, 'fsync'): + os.fsync(f.fileno()) + f.close() + + def test_read(self): + self.test_write() + # Try reading. + f = gzip.GzipFile(self.filename, 'r') ; d = f.read() ; f.close() + self.assertEqual(d, data1*50) + + def test_append(self): + self.test_write() + # Append to the previous file + f = gzip.GzipFile(self.filename, 'ab') ; f.write(data2 * 15) ; f.close() + + f = gzip.GzipFile(self.filename, 'rb') ; d = f.read() ; f.close() + self.assertEqual(d, (data1*50) + (data2*15)) + + def test_readline(self): + self.test_write() + # Try .readline() with varying line lengths + + f = gzip.GzipFile(self.filename, 'rb') + line_length = 0 + while 1: + L = f.readline(line_length) + if L == "" and line_length != 0: break + self.assert_(len(L) <= line_length) + line_length = (line_length + 1) % 50 + f.close() + + def test_readlines(self): + self.test_write() + # Try .readlines() + + f = gzip.GzipFile(self.filename, 'rb') + L = f.readlines() + f.close() + + f = gzip.GzipFile(self.filename, 'rb') + while 1: + L = f.readlines(150) + if L == []: break + f.close() + + def test_seek_read(self): + self.test_write() + # Try seek, read test + + f = gzip.GzipFile(self.filename) + while 1: + oldpos = f.tell() + line1 = f.readline() + if not line1: break + newpos = f.tell() + f.seek(oldpos) # negative seek + if len(line1)>10: + amount = 10 + else: + amount = len(line1) + line2 = f.read(amount) + self.assertEqual(line1[:amount], line2) + f.seek(newpos) # positive seek + f.close() + + def test_seek_write(self): + # Try seek, write test + f = gzip.GzipFile(self.filename, 'w') + for pos in range(0, 256, 16): + f.seek(pos) + f.write('GZ\n') + f.close() + + def test_mode(self): + self.test_write() + f = gzip.GzipFile(self.filename, 'r') + self.assertEqual(f.myfileobj.mode, 'rb') + f.close() + +def test_main(verbose=None): + test_support.run_unittest(TestGzip) + +if __name__ == "__main__": + test_main(verbose=True) |