mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 02:38:25 +00:00
Add a tool for shrinking failing examples (#5731)
## Summary For formatter instabilities, the message we get look something like this: ```text Unstable formatting /home/konsti/ruff/target/checkouts/deepmodeling:dpdispatcher/dpdispatcher/slurm.py @@ -47,9 +47,9 @@ - script_header_dict["slurm_partition_line"] = ( - NOT_YET_IMPLEMENTED_ExprJoinedStr - ) + script_header_dict[ + "slurm_partition_line" + ] = NOT_YET_IMPLEMENTED_ExprJoinedStr Unstable formatting /home/konsti/ruff/target/checkouts/deepmodeling:dpdispatcher/dpdispatcher/pbs.py @@ -26,9 +26,9 @@ - pbs_script_header_dict["select_node_line"] += ( - NOT_YET_IMPLEMENTED_ExprJoinedStr - ) + pbs_script_header_dict[ + "select_node_line" + ] += NOT_YET_IMPLEMENTED_ExprJoinedStr ``` For ruff crashes. you don't even get that but just the file that crashed it. To extract the actual bug, you'd need to manually remove parts of the file, rerun to see if the bug still occurs (and revert if it doesn't) until you have a minimal example. With this script, you run ```shell cargo run --bin ruff_shrinking -- target/checkouts/deepmodeling:dpdispatcher/dpdispatcher/slurm.py target/minirepo/code.py "Unstable formatting" "target/debug/ruff_dev format-dev --stability-check target/minirepo" ``` and get ```python class Slurm(): def gen_script_header(self, job): if resources.queue_name != "": script_header_dict["slurm_partition_line"] = f"#SBATCH --partition {resources.queue_name}" ``` which is an nice minimal example. I've been using this script and it would be easier for me if this were part of main. The main disadvantage to merging is that it adds additional dependencies. ## Test Plan I've been using this for a number of minimization. This is an internal helper script you only run manually. I could add a test that minimizes a rule violation if required. --------- Co-authored-by: Micha Reiser <micha@reiser.io>
This commit is contained in:
parent
ef58287c16
commit
d098256c96
5 changed files with 720 additions and 128 deletions
|
@ -288,7 +288,9 @@ fn format_dev_multi_project(args: &Args) -> bool {
|
|||
bar.suspend(|| print!("{}", result.display(args.format)));
|
||||
if let Some(error_file) = &mut error_file {
|
||||
write!(error_file, "{}", result.display(args.format)).unwrap();
|
||||
error_file.flush().unwrap();
|
||||
}
|
||||
bar.println(result.display(args.format).to_string().trim_end());
|
||||
bar.inc(1);
|
||||
}
|
||||
Message::Failed { path, error } => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue