import re
import hypothesmith
-from hypothesis import HealthCheck, given, settings, strategies as st
+from hypothesis import HealthCheck, given, settings
+from hypothesis import strategies as st
import black
from blib2to3.pgen2.tokenize import TokenError
max_examples=1000, # roughly 1k tests/minute, or half that under coverage
derandomize=True, # deterministic mode to avoid CI flakiness
deadline=None, # ignore Hypothesis' health checks; we already know that
- suppress_health_check=HealthCheck.all(), # this is slow and filter-heavy.
+ suppress_health_check=list(HealthCheck), # this is slow and filter-heavy.
)
@given(
# Note that while Hypothesmith might generate code unlike that written by
black.FileMode,
line_length=st.just(88) | st.integers(0, 200),
string_normalization=st.booleans(),
+ preview=st.booleans(),
is_pyi=st.booleans(),
+ magic_trailing_comma=st.booleans(),
),
)
def test_idempotent_any_syntatically_valid_python(
dst_contents = black.format_str(src_contents, mode=mode)
except black.InvalidInput:
# This is a bug - if it's valid Python code, as above, Black should be
- # able to cope with it. See issues #970, #1012, #1358, and #1557.
+ # able to cope with it. See issues #970, #1012
# TODO: remove this try-except block when issues are resolved.
return
except TokenError as e:
# (if you want only bounded fuzzing, just use `pytest fuzz.py`)
try:
import sys
- import atheris
+
+ import atheris # type: ignore[import]
except ImportError:
pass
else:
test = test_idempotent_any_syntatically_valid_python
- atheris.Setup(sys.argv, test.hypothesis.fuzz_one_input)
+ atheris.Setup(
+ sys.argv,
+ test.hypothesis.fuzz_one_input, # type: ignore[attr-defined]
+ )
atheris.Fuzz()