-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
red-knot: adapt fuzz-parser to work with red-knot #14566
Conversation
3d56a67
to
ed13cbd
Compare
Probably similar to the panics here related to self-referential class bases: ruff/crates/red_knot_workspace/tests/check.rs Lines 269 to 272 in ac23c99
And/or here: #14333 |
|
Nice, thank you. Do you think it would be hard to instead test if the exit code isn't 1 or zero (panic should use something else) instead of adding the new flag to red knot? |
Oh I've always assumed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @connorskees, this is great! I pushed a few nitpicks, but nothing major.
…#14606) ## Summary This PR gets rid of the `requirements.in` and `requirements.txt` files in the `scripts/fuzz-parser` directory, and replaces them with `pyproject.toml` and `uv.lock` files. The script is renamed from `fuzz-parser` to `py-fuzzer` (since it can now also be used to fuzz red-knot as well as the parser, following #14566), and moved from the `scripts/` directory to the `python/` directory, since it's now a (uv)-pip-installable project in its own right. I've been resisting this for a while, because conceptually this script just doesn't feel "complicated" enough to me for it to be a full-blown package. However, I think it's time to do this. Making it a proper package has several advantages: - It means we can run it from the project root using `uv run` without having to activate a virtual environment and ensure that all required dependencies are installed into that environment - Using a `pyproject.toml` file means that we can express that the project requires Python 3.12+ to run properly; this wasn't possible before - I've been running mypy on the project locally when I've been working on it or reviewing other people's PRs; now I can put the mypy config for the project in the `pyproject.toml` file ## Test Plan I manually tested that all the commands detailed in `python/py-fuzzer/README.md` work for me locally. --------- Co-authored-by: David Peter <sharkdp@users.noreply.github.com>
Adds a
--bin
argument to thefuzz-parser
script, which makes it possible to fuzz eitherruff
orred_knot
.This fuzzing finds a few panics already in some seeds:
This was tested manually by running the above command for
--bin ruff
and--bin red_knot
.Resolves #14157, though does not add the fuzzing to CI due to the existing failures.