Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fuzzer: add special-case for multi-line EOF TokenError #1991

Merged
merged 10 commits into from
Feb 20, 2021
13 changes: 13 additions & 0 deletions fuzz.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
a coverage-guided fuzzer I'm working on.
"""

import re

import hypothesmith
from hypothesis import HealthCheck, given, settings, strategies as st

import black
from blib2to3.pgen2.tokenize import TokenError


# This test uses the Hypothesis and Hypothesmith libraries to generate random
Expand Down Expand Up @@ -46,6 +49,16 @@ def test_idempotent_any_syntatically_valid_python(
# able to cope with it. See issues #970, #1012, #1358, and #1557.
# TODO: remove this try-except block when issues are resolved.
return
except TokenError as e:
if (
e.args[0] == "EOF in multi-line statement"
and re.search(r"\r?\n\\\r?\n", src_contents) is not None
):
# This is a bug - if it's valid Python code, as above, Black should be
# able to cope with it. See issue #1012.
# TODO: remove this block when the issue is resolved.
return
raise

# And check that we got equivalent and stable output.
black.assert_equivalent(src_contents, dst_contents)
Expand Down