]> granicus.if.org Git - python/commitdiff
Merged revisions 81096 via svnmerge from
authorAntoine Pitrou <solipsis@pitrou.net>
Tue, 11 May 2010 23:38:15 +0000 (23:38 +0000)
committerAntoine Pitrou <solipsis@pitrou.net>
Tue, 11 May 2010 23:38:15 +0000 (23:38 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r81096 | antoine.pitrou | 2010-05-12 01:36:40 +0200 (mer., 12 mai 2010) | 11 lines

  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).
  ........
................

Lib/test/test_zlib.py
Misc/NEWS

index 3a5bd3021d386ea23ec20f0467c2423790760b1c..0c259ccffbb825b565eff87e79999b2d5ebf2c51 100644 (file)
@@ -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
index 491e0ace3803a0690d1cd9b526202755c5a55bfc..66071ebdc0f1791a6da26a78d1d99e2ede95ab80 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -176,6 +176,10 @@ Build
 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 #8629: Disable some test_ssl tests, since they give different
   results with OpenSSL 1.0.0 and higher.