From: Antoine Pitrou Date: Tue, 11 May 2010 23:36:40 +0000 (+0000) Subject: Merged revisions 81094 via svnmerge from X-Git-Tag: v3.2a1~830 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c09c92fd81b05db4e5bfe5322f038ca1727fcde0;p=thirdparty%2FPython%2Fcpython.git Merged revisions 81094 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r81094 | antoine.pitrou | 2010-05-12 01:32:31 +0200 (mer., 12 mai 2010) | 6 lines Issue #8672: Add a zlib test ensuring that an incomplete stream can be handled by a decompressor object without errors (it returns incomplete uncompressed data). ........ --- diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py index 9b7c13597b9d..8ff21835c68e 100644 --- a/Lib/test/test_zlib.py +++ b/Lib/test/test_zlib.py @@ -379,6 +379,19 @@ class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase): dco = zlib.decompressobj() self.assertEqual(dco.flush(), b"") # Returns nothing + def test_decompress_incomplete_stream(self): + # This is 'foo', deflated + x = b'x\x9cK\xcb\xcf\x07\x00\x02\x82\x01E' + # For the record + self.assertEqual(zlib.decompress(x), b'foo') + self.assertRaises(zlib.error, zlib.decompress, x[:-5]) + # Omitting the stream end works with decompressor objects + # (see issue #8672). + dco = zlib.decompressobj() + y = dco.decompress(x[:-5]) + y += dco.flush() + self.assertEqual(y, b'foo') + if hasattr(zlib.compressobj(), "copy"): def test_compresscopy(self): # Test copying a compression object diff --git a/Misc/NEWS b/Misc/NEWS index cd1ed075372e..a351c80974ef 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -1276,6 +1276,10 @@ Documentation Tests ----- +- Issue #8672: Add a zlib test ensuring that an incomplete stream can be + handled by a decompressor object without errors (it returns incomplete + uncompressed data). + - Issue #8533: regrtest uses backslashreplace error handler for stdout to avoid UnicodeEncodeError (write non-ASCII character to stdout using ASCII encoding)