##// END OF EJS Templates
tests: write out file using bytes I/O...
tests: write out file using bytes I/O The encoding of sys.stdout varies between Python versions. So using a one-liner to write a file from a Unicode string is not deterministic. This commit writes out the file using bytes I/O to ensure we have exactly the bytes we want in the file. This change fixes a test failure in Python 3.5/3.6. Differential Revision: https://phab.mercurial-scm.org/D7226

File last commit:

r42237:675775c3 default
r43734:e7eb67ea stable
Show More
test_data_structures_fuzzing.py
76 lines | 3.5 KiB | text/x-python | PythonLexer
/ contrib / python-zstandard / tests / test_data_structures_fuzzing.py
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 import io
import os
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import sys
import unittest
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
try:
import hypothesis
import hypothesis.strategies as strategies
except ImportError:
raise unittest.SkipTest('hypothesis not available')
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import zstandard as zstd
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
from .common import (
make_cffi,
)
s_windowlog = strategies.integers(min_value=zstd.WINDOWLOG_MIN,
max_value=zstd.WINDOWLOG_MAX)
s_chainlog = strategies.integers(min_value=zstd.CHAINLOG_MIN,
max_value=zstd.CHAINLOG_MAX)
s_hashlog = strategies.integers(min_value=zstd.HASHLOG_MIN,
max_value=zstd.HASHLOG_MAX)
s_searchlog = strategies.integers(min_value=zstd.SEARCHLOG_MIN,
max_value=zstd.SEARCHLOG_MAX)
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 s_minmatch = strategies.integers(min_value=zstd.MINMATCH_MIN,
max_value=zstd.MINMATCH_MAX)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 s_targetlength = strategies.integers(min_value=zstd.TARGETLENGTH_MIN,
Gregory Szorc
zstandard: vendor python-zstandard 0.10.1...
r40157 max_value=zstd.TARGETLENGTH_MAX)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 s_strategy = strategies.sampled_from((zstd.STRATEGY_FAST,
zstd.STRATEGY_DFAST,
zstd.STRATEGY_GREEDY,
zstd.STRATEGY_LAZY,
zstd.STRATEGY_LAZY2,
zstd.STRATEGY_BTLAZY2,
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 zstd.STRATEGY_BTOPT,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 zstd.STRATEGY_BTULTRA,
zstd.STRATEGY_BTULTRA2))
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
@make_cffi
@unittest.skipUnless('ZSTD_SLOW_TESTS' in os.environ, 'ZSTD_SLOW_TESTS not set')
class TestCompressionParametersHypothesis(unittest.TestCase):
@hypothesis.given(s_windowlog, s_chainlog, s_hashlog, s_searchlog,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 s_minmatch, s_targetlength, s_strategy)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 def test_valid_init(self, windowlog, chainlog, hashlog, searchlog,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 minmatch, targetlength, strategy):
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 zstd.ZstdCompressionParameters(window_log=windowlog,
chain_log=chainlog,
hash_log=hashlog,
search_log=searchlog,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 min_match=minmatch,
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 target_length=targetlength,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 strategy=strategy)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
@hypothesis.given(s_windowlog, s_chainlog, s_hashlog, s_searchlog,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 s_minmatch, s_targetlength, s_strategy)
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 def test_estimated_compression_context_size(self, windowlog, chainlog,
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 hashlog, searchlog,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 minmatch, targetlength,
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 strategy):
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 if minmatch == zstd.MINMATCH_MIN and strategy in (zstd.STRATEGY_FAST, zstd.STRATEGY_GREEDY):
minmatch += 1
elif minmatch == zstd.MINMATCH_MAX and strategy != zstd.STRATEGY_FAST:
minmatch -= 1
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 p = zstd.ZstdCompressionParameters(window_log=windowlog,
chain_log=chainlog,
hash_log=hashlog,
search_log=searchlog,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 min_match=minmatch,
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 target_length=targetlength,
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 strategy=strategy)
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 size = p.estimated_compression_context_size()