diff options
author | Victor Stinner <vstinner@python.org> | 2022-02-24 23:32:02 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-24 23:32:02 (GMT) |
commit | 9475dc0b8d2a0db40278bbcb88a89b1265a77ec9 (patch) | |
tree | cf5d098db745eb21cf1ceb269b5b26676fba9bfc /Lib/test/test_zlib.py | |
parent | c9c178fdb1af01e441a6c83f3a21a67e5dd9f17d (diff) | |
download | cpython-9475dc0b8d2a0db40278bbcb88a89b1265a77ec9.zip cpython-9475dc0b8d2a0db40278bbcb88a89b1265a77ec9.tar.gz cpython-9475dc0b8d2a0db40278bbcb88a89b1265a77ec9.tar.bz2 |
bpo-46623: Skip two test_zlib tests on s390x (GH-31096)
Skip test_pair() and test_speech128() of test_zlib on s390x since
they fail if zlib uses the s390x hardware accelerator.
Diffstat (limited to 'Lib/test/test_zlib.py')
-rw-r--r-- | Lib/test/test_zlib.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py index 04fb4d9..f20aad0 100644 --- a/Lib/test/test_zlib.py +++ b/Lib/test/test_zlib.py @@ -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 @@ -18,6 +19,35 @@ requires_Decompress_copy = unittest.skipUnless( hasattr(zlib.decompressobj(), "copy"), 'requires Decompress.copy()') +# bpo-46623: On s390x, when a hardware accelerator is used, using different +# ways to compress data with zlib can produce different compressed data. +# Simplified test_pair() code: +# +# def func1(data): +# return zlib.compress(data) +# +# def func2(data) +# co = zlib.compressobj() +# x1 = co.compress(data) +# x2 = co.flush() +# return x1 + x2 +# +# On s390x if zlib uses a hardware accelerator, func1() creates a single +# "final" compressed block whereas func2() produces 3 compressed blocks (the +# last one is a final block). On other platforms with no accelerator, func1() +# and func2() produce the same compressed data made of a single (final) +# compressed block. +# +# Only the compressed data is different, the decompression returns the original +# data: +# +# zlib.decompress(func1(data)) == zlib.decompress(func2(data)) == data +# +# Make the assumption that s390x always has an accelerator to simplify the skip +# condition. Windows doesn't have os.uname() but it doesn't support s390x. +skip_on_s390x = unittest.skipIf(hasattr(os, 'uname') and os.uname().machine == 's390x', + 'skipped on s390x') + class VersionTestCase(unittest.TestCase): @@ -182,6 +212,7 @@ class CompressTestCase(BaseCompressTestCase, unittest.TestCase): bufsize=zlib.DEF_BUF_SIZE), HAMLET_SCENE) + @skip_on_s390x def test_speech128(self): # compress more data data = HAMLET_SCENE * 128 @@ -233,6 +264,7 @@ class CompressTestCase(BaseCompressTestCase, unittest.TestCase): class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase): # Test compression object + @skip_on_s390x def test_pair(self): # straightforward compress/decompress objects datasrc = HAMLET_SCENE * 128 |