fuzzer: add special-case for multi-line EOF TokenError (#1991)
* Add special-case for multi-line EOF TokenError under Python3.7 * Update conditional check to correspond to original issue description (and include issue hyperlink) * Add warning and hint regarding replaying the fuzzer code generation * Include code review suggestion (with modifications for this to follow) Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com> * Remove Python version check, since this issue does exist across more recent Python versions than 3.7 * Update explanatory comment * Add clarification for potentially-ambiguous blib2to3 import * Update explanatory comment * Bring comment into consistent format with previous comment * Revert "Add clarification for potentially-ambiguous blib2to3 import" This reverts commit 357b7cc03bdb19dd924f1accd428352f4bb44e5c. Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>
This commit is contained in:
parent
97b8496d67
commit
306a513137
13
fuzz.py
13
fuzz.py
@ -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
|
||||
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user