psf / black

The uncompromising Python code formatter
https://black.readthedocs.io/en/stable/
MIT License
38.73k stars 2.43k forks source link

Parse error found with Hypothesmith #970

Open Zac-HD opened 5 years ago

Zac-HD commented 5 years ago
weird = "pass #\r#\n"
exec(weird)                                     # works, as does `compile` etc.
black.format_str(weird, mode=black.FileMode())  # fails with `black.InvalidInput`

Operating system: Windows Python version: 3.7.3 Black version: 19.3b0 Does also happen on master: yes (website hangs)

I found this weird little string with hypothesmith, a tool for generating Python source code with Hypothesis that I started at the PyCon NA sprints and published at the PyCon AU sprints. Currently it works based on an approximate grammar, post-processing, and filtering.

CC @ambv who I know was interested in fuzzing 😄. Next steps... I think a combination of targeted mutation (open PR upstream) and spending more than a few minutes of CPU time could turn up a lot more weird things!

zsol commented 5 years ago

Nice!

zsol commented 5 years ago

FWIW this is also a bug in upstream lib2to3. You might want to report it on http://bugs.python.org/