Guido van Rossum | f27cc5b | 2001-01-17 21:43:06 +0000 | [diff] [blame] | 1 | from test_support import verify |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 2 | import sys, os |
| 3 | import gzip, tempfile |
| 4 | |
| 5 | filename = tempfile.mktemp() |
| 6 | |
| 7 | data1 = """ int length=DEFAULTALLOC, err = Z_OK; |
| 8 | PyObject *RetVal; |
| 9 | int flushmode = Z_FINISH; |
| 10 | unsigned long start_total_out; |
| 11 | |
| 12 | """ |
| 13 | |
| 14 | data2 = """/* zlibmodule.c -- gzip-compatible data compression */ |
| 15 | /* See http://www.cdrom.com/pub/infozip/zlib/ */ |
| 16 | /* See http://www.winimage.com/zLibDll for Windows */ |
| 17 | """ |
| 18 | |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 19 | f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) ; f.close() |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 20 | |
Guido van Rossum | 052364b | 1999-04-07 19:00:58 +0000 | [diff] [blame] | 21 | f = gzip.GzipFile(filename, 'rb') ; d = f.read() ; f.close() |
Marc-André Lemburg | 3661908 | 2001-01-17 19:11:13 +0000 | [diff] [blame] | 22 | verify(d == data1*50) |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 23 | |
| 24 | # Append to the previous file |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 25 | f = gzip.GzipFile(filename, 'ab') ; f.write(data2 * 15) ; f.close() |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 26 | |
Guido van Rossum | 052364b | 1999-04-07 19:00:58 +0000 | [diff] [blame] | 27 | f = gzip.GzipFile(filename, 'rb') ; d = f.read() ; f.close() |
Marc-André Lemburg | 3661908 | 2001-01-17 19:11:13 +0000 | [diff] [blame] | 28 | verify(d == (data1*50) + (data2*15)) |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 29 | |
| 30 | # Try .readline() with varying line lengths |
| 31 | |
| 32 | f = gzip.GzipFile(filename, 'rb') |
| 33 | line_length = 0 |
| 34 | while 1: |
Guido van Rossum | f27cc5b | 2001-01-17 21:43:06 +0000 | [diff] [blame] | 35 | L = f.readline(line_length) |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 36 | if L == "" and line_length != 0: break |
Marc-André Lemburg | 3661908 | 2001-01-17 19:11:13 +0000 | [diff] [blame] | 37 | verify(len(L) <= line_length) |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 38 | line_length = (line_length + 1) % 50 |
| 39 | f.close() |
| 40 | |
Fred Drake | 004d5e6 | 2000-10-23 17:22:08 +0000 | [diff] [blame] | 41 | # Try .readlines() |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 42 | |
| 43 | f = gzip.GzipFile(filename, 'rb') |
| 44 | L = f.readlines() |
| 45 | f.close() |
| 46 | |
| 47 | f = gzip.GzipFile(filename, 'rb') |
| 48 | while 1: |
| 49 | L = f.readlines(150) |
Fred Drake | 004d5e6 | 2000-10-23 17:22:08 +0000 | [diff] [blame] | 50 | if L == []: break |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 51 | f.close() |
| 52 | |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 53 | |
Guido van Rossum | f27cc5b | 2001-01-17 21:43:06 +0000 | [diff] [blame] | 54 | os.unlink(filename) |