6
6
import pickle
7
7
import random
8
8
import sys
9
- from test .support import bigmemtest , _1G , _4G , skip_on_s390x
9
+ from test .support import bigmemtest , _1G , _4G , is_s390x
10
10
11
11
12
12
zlib = import_helper .import_module ('zlib' )
@@ -33,8 +33,9 @@ def _zlib_runtime_version_tuple(zlib_version=zlib.ZLIB_RUNTIME_VERSION):
33
33
ZLIB_RUNTIME_VERSION_TUPLE = _zlib_runtime_version_tuple ()
34
34
35
35
36
- # bpo-46623: On s390x, when a hardware accelerator is used, using different
37
- # ways to compress data with zlib can produce different compressed data.
36
+ # bpo-46623: When a hardware accelerator is used (currently only on s390x),
37
+ # using different ways to compress data with zlib can produce different
38
+ # compressed data.
38
39
# Simplified test_pair() code:
39
40
#
40
41
# def func1(data):
@@ -57,8 +58,10 @@ def _zlib_runtime_version_tuple(zlib_version=zlib.ZLIB_RUNTIME_VERSION):
57
58
#
58
59
# zlib.decompress(func1(data)) == zlib.decompress(func2(data)) == data
59
60
#
60
- # Make the assumption that s390x always has an accelerator to simplify the skip
61
- # condition.
61
+ # To simplify the skip condition, make the assumption that s390x always has an
62
+ # accelerator, and nothing else has it.
63
+ HW_ACCELERATED = is_s390x
64
+
62
65
63
66
class VersionTestCase (unittest .TestCase ):
64
67
@@ -223,12 +226,14 @@ def test_keywords(self):
223
226
bufsize = zlib .DEF_BUF_SIZE ),
224
227
HAMLET_SCENE )
225
228
226
- @skip_on_s390x
227
229
def test_speech128 (self ):
228
230
# compress more data
229
231
data = HAMLET_SCENE * 128
230
232
x = zlib .compress (data )
231
- self .assertEqual (zlib .compress (bytearray (data )), x )
233
+ # With hardware acceleration, the compressed bytes
234
+ # might not be identical.
235
+ if not HW_ACCELERATED :
236
+ self .assertEqual (zlib .compress (bytearray (data )), x )
232
237
for ob in x , bytearray (x ):
233
238
self .assertEqual (zlib .decompress (ob ), data )
234
239
@@ -275,7 +280,6 @@ def test_64bit_compress(self, size):
275
280
276
281
class CompressObjectTestCase (BaseCompressTestCase , unittest .TestCase ):
277
282
# Test compression object
278
- @skip_on_s390x
279
283
def test_pair (self ):
280
284
# straightforward compress/decompress objects
281
285
datasrc = HAMLET_SCENE * 128
@@ -286,7 +290,10 @@ def test_pair(self):
286
290
x1 = co .compress (data )
287
291
x2 = co .flush ()
288
292
self .assertRaises (zlib .error , co .flush ) # second flush should not work
289
- self .assertEqual (x1 + x2 , datazip )
293
+ # With hardware acceleration, the compressed bytes might not
294
+ # be identical.
295
+ if not HW_ACCELERATED :
296
+ self .assertEqual (x1 + x2 , datazip )
290
297
for v1 , v2 in ((x1 , x2 ), (bytearray (x1 ), bytearray (x2 ))):
291
298
dco = zlib .decompressobj ()
292
299
y1 = dco .decompress (v1 + v2 )
0 commit comments