@@ -681,10 +681,18 @@ def test_length_overflow(self, size):
681
681
data = None
682
682
683
683
def test_wbits (self ):
684
+ # wbits=0 only supported since zlib v1.2.3.5
685
+ # Register "1.2.3" as "1.2.3.0"
686
+ v = (zlib .ZLIB_RUNTIME_VERSION + ".0" ).split ("." , 4 )
687
+ supports_wbits_0 = int (v [0 ]) > 1 or int (v [0 ]) == 1 \
688
+ and (int (v [1 ]) > 2 or int (v [1 ]) == 2
689
+ and (int (v [2 ]) > 3 or int (v [2 ]) == 3 and int (v [3 ]) >= 5 ))
690
+
684
691
co = zlib .compressobj (level = 1 , wbits = 15 )
685
692
zlib15 = co .compress (HAMLET_SCENE ) + co .flush ()
686
693
self .assertEqual (zlib .decompress (zlib15 , 15 ), HAMLET_SCENE )
687
- self .assertEqual (zlib .decompress (zlib15 , 0 ), HAMLET_SCENE )
694
+ if supports_wbits_0 :
695
+ self .assertEqual (zlib .decompress (zlib15 , 0 ), HAMLET_SCENE )
688
696
self .assertEqual (zlib .decompress (zlib15 , 32 + 15 ), HAMLET_SCENE )
689
697
with self .assertRaisesRegex (zlib .error , 'invalid window size' ):
690
698
zlib .decompress (zlib15 , 14 )
@@ -698,7 +706,8 @@ def test_wbits(self):
698
706
zlib9 = co .compress (HAMLET_SCENE ) + co .flush ()
699
707
self .assertEqual (zlib .decompress (zlib9 , 9 ), HAMLET_SCENE )
700
708
self .assertEqual (zlib .decompress (zlib9 , 15 ), HAMLET_SCENE )
701
- self .assertEqual (zlib .decompress (zlib9 , 0 ), HAMLET_SCENE )
709
+ if supports_wbits_0 :
710
+ self .assertEqual (zlib .decompress (zlib9 , 0 ), HAMLET_SCENE )
702
711
self .assertEqual (zlib .decompress (zlib9 , 32 + 9 ), HAMLET_SCENE )
703
712
dco = zlib .decompressobj (wbits = 32 + 9 )
704
713
self .assertEqual (dco .decompress (zlib9 ), HAMLET_SCENE )
0 commit comments