test suite: let FixedGzipFile.seek() pass on what gzip.GzipFile.seek() returned

This fixes test suite failures with Python 2.7.

Starting with Python 2.7, gzip.GzipFile is subclassing io.IOBase.
The seek() method of io.IOBase differs from file.seek() and the old
gzip.GzipFile.seek() in that it returns the new file position, not None.

And in Python 2.7, gzip.GzipFile.tell() is inherited from
io.IOBase.tell(), which is implemented using its seek() method.
FixedGzipFile subclasses gzip.GzipFile and overrides seek(); therefore,
this method need be adapted for this change in the interface.

Closes: #3314293.
This commit is contained in:
Nikolaus Schulz 2011-06-17 23:14:55 +02:00
parent 39e6a532d0
commit f6046b9d69
2 changed files with 7 additions and 2 deletions

View File

@ -3,6 +3,9 @@ version 0.?.? - UNRELEASED
* Fixed manpage installation path to be FHS compliant * Fixed manpage installation path to be FHS compliant
* Speed up IMAP archiving with the --quiet option * Speed up IMAP archiving with the --quiet option
* Ported the manpage from SGML to XML * Ported the manpage from SGML to XML
* Fix test suite failures with Python 2.7 by letting the test suite method
FixedGzipFile.seek() return the new absolute file position.
Closes: #3314293.
version 0.8.2 - 16 October 2010 version 0.8.2 - 16 October 2010

View File

@ -85,14 +85,16 @@ class FixedGzipFile(gzip.GzipFile):
"""GzipFile with seek method accepting whence parameter.""" """GzipFile with seek method accepting whence parameter."""
def seek(self, offset, whence=0): def seek(self, offset, whence=0):
try: try:
gzip.GzipFile.seek(self, offset, whence) # Try calling gzip.GzipFile.seek with the whence parameter.
# For Python >= 2.7, it returns the new offset; pass that on.
return gzip.GzipFile.seek(self, offset, whence)
except TypeError: except TypeError:
if whence: if whence:
if whence == 1: if whence == 1:
offset = self.offset + offset offset = self.offset + offset
else: else:
raise ValueError('Seek from end not supported') raise ValueError('Seek from end not supported')
gzip.GzipFile.seek(self, offset) return gzip.GzipFile.seek(self, offset)
# precision of os.utime() when restoring mbox timestamps # precision of os.utime() when restoring mbox timestamps
utimes_precision = 5 utimes_precision = 5