mirror of
https://github.com/python/cpython.git
synced 2025-07-08 03:45:36 +00:00
gh-125041: gh-90781: test_zlib: For s390x HW acceleration, skip checking the compressed bytes (GH-125042)
This backports two commits:
- GH-31096 skipped the tests unconditionally
- GH-125042 skips only the possibly-failing assertion
(cherry picked from commit cc5a225cdc
)
This commit is contained in:
parent
850189a64e
commit
d5228565c7
2 changed files with 22 additions and 2 deletions
|
@ -3,6 +3,7 @@ from test import support
|
|||
from test.support import import_helper
|
||||
import binascii
|
||||
import copy
|
||||
import os
|
||||
import pickle
|
||||
import random
|
||||
import sys
|
||||
|
@ -32,6 +33,16 @@ def _zlib_runtime_version_tuple(zlib_version=zlib.ZLIB_RUNTIME_VERSION):
|
|||
ZLIB_RUNTIME_VERSION_TUPLE = _zlib_runtime_version_tuple()
|
||||
|
||||
|
||||
# bpo-46623: When a hardware accelerator is used (currently only on s390x),
|
||||
# using different ways to compress data with zlib can produce different
|
||||
# compressed data.
|
||||
#
|
||||
# To simplify the skip condition, make the assumption that s390x always has an
|
||||
# accelerator, and nothing else has it.
|
||||
# Windows doesn't have os.uname() but it doesn't support s390x.
|
||||
HW_ACCELERATED = hasattr(os, 'uname') and os.uname().machine == 's390x'
|
||||
|
||||
|
||||
class VersionTestCase(unittest.TestCase):
|
||||
|
||||
def test_library_version(self):
|
||||
|
@ -199,7 +210,10 @@ class CompressTestCase(BaseCompressTestCase, unittest.TestCase):
|
|||
# compress more data
|
||||
data = HAMLET_SCENE * 128
|
||||
x = zlib.compress(data)
|
||||
self.assertEqual(zlib.compress(bytearray(data)), x)
|
||||
# With hardware acceleration, the compressed bytes
|
||||
# might not be identical.
|
||||
if not HW_ACCELERATED:
|
||||
self.assertEqual(zlib.compress(bytearray(data)), x)
|
||||
for ob in x, bytearray(x):
|
||||
self.assertEqual(zlib.decompress(ob), data)
|
||||
|
||||
|
@ -256,7 +270,10 @@ class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase):
|
|||
x1 = co.compress(data)
|
||||
x2 = co.flush()
|
||||
self.assertRaises(zlib.error, co.flush) # second flush should not work
|
||||
self.assertEqual(x1 + x2, datazip)
|
||||
# With hardware acceleration, the compressed bytes might not
|
||||
# be identical.
|
||||
if not HW_ACCELERATED:
|
||||
self.assertEqual(x1 + x2, datazip)
|
||||
for v1, v2 in ((x1, x2), (bytearray(x1), bytearray(x2))):
|
||||
dco = zlib.decompressobj()
|
||||
y1 = dco.decompress(v1 + v2)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Re-enable skipped tests for :mod:`zlib` on the s390x architecture: only skip
|
||||
checks of the compressed bytes, which can be different between zlib's
|
||||
software implementation and the hardware-accelerated implementation.
|
Loading…
Add table
Add a link
Reference in a new issue