]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #5784: wbits=0 apparently added in zlib v1.2.3.5
authorMartin Panter <vadmium+py@gmail.com>
Fri, 27 May 2016 11:20:21 +0000 (11:20 +0000)
committerMartin Panter <vadmium+py@gmail.com>
Fri, 27 May 2016 11:20:21 +0000 (11:20 +0000)
Doc/library/zlib.rst
Lib/test/test_zlib.py

index 565f3f7211ae5b0fec9a2509af83888cb1d038aa..b7ca5589329506266a5289f641d11360c36efc2e 100644 (file)
@@ -142,6 +142,7 @@ The available exception and functions in this module are:
      must include a zlib header and trailer.
 
    * 0: Automatically determine the window size from the zlib header.
+     Only supported since zlib 1.2.3.5.
 
    * −8 to −15: Uses the absolute value of *wbits* as the window size
      logarithm.  The input must be a raw stream with no header or trailer.
index 72a15965369c75e9da3fdfe5ebc649dbe17bf30e..b6bebbced11a4af29ae8a49728e5d8cc5a3e83f4 100644 (file)
@@ -681,10 +681,18 @@ class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase):
             data = None
 
     def test_wbits(self):
+        # wbits=0 only supported since zlib v1.2.3.5
+        # Register "1.2.3" as "1.2.3.0"
+        v = (zlib.ZLIB_RUNTIME_VERSION + ".0").split(".", 4)
+        supports_wbits_0 = int(v[0]) > 1 or int(v[0]) == 1 \
+            and (int(v[1]) > 2 or int(v[1]) == 2
+            and (int(v[2]) > 3 or int(v[2]) == 3 and int(v[3]) >= 5))
+
         co = zlib.compressobj(level=1, wbits=15)
         zlib15 = co.compress(HAMLET_SCENE) + co.flush()
         self.assertEqual(zlib.decompress(zlib15, 15), HAMLET_SCENE)
-        self.assertEqual(zlib.decompress(zlib15, 0), HAMLET_SCENE)
+        if supports_wbits_0:
+            self.assertEqual(zlib.decompress(zlib15, 0), HAMLET_SCENE)
         self.assertEqual(zlib.decompress(zlib15, 32 + 15), HAMLET_SCENE)
         with self.assertRaisesRegex(zlib.error, 'invalid window size'):
             zlib.decompress(zlib15, 14)
@@ -698,7 +706,8 @@ class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase):
         zlib9 = co.compress(HAMLET_SCENE) + co.flush()
         self.assertEqual(zlib.decompress(zlib9, 9), HAMLET_SCENE)
         self.assertEqual(zlib.decompress(zlib9, 15), HAMLET_SCENE)
-        self.assertEqual(zlib.decompress(zlib9, 0), HAMLET_SCENE)
+        if supports_wbits_0:
+            self.assertEqual(zlib.decompress(zlib9, 0), HAMLET_SCENE)
         self.assertEqual(zlib.decompress(zlib9, 32 + 9), HAMLET_SCENE)
         dco = zlib.decompressobj(wbits=32 + 9)
         self.assertEqual(dco.decompress(zlib9), HAMLET_SCENE)