RUF072: skip formfeeds on dedent#24308
Conversation
RUF072: skip formfeeds on dedent
|
| # Bare try finally with line starting with a formfeed | ||
| try: | ||
| 1 | ||
| 2 | ||
| finally: | ||
| pass | ||
|
|
There was a problem hiding this comment.
I'll do a full review later. Can you add the new test at the end? It reduces the snapshot diff size, which makes the changes easier to review
There was a problem hiding this comment.
Yeah sure, I'll make those changes and push up, I was trying to keep the error cases and ok cases together but agree it makes the diff horrible to read
| /// Lines that are indented by _less_ than the indent of the first line | ||
| /// are left unchanged. | ||
| /// | ||
| /// Lines that consist solely of whitespace are trimmed to a blank line. |
There was a problem hiding this comment.
Let's update the documentation to explain how form feeds are handled
|
|
||
| #[test] | ||
| #[rustfmt::skip] | ||
| fn dedent_to_handles_when_multiple_leading_form_feeds_greater_than_dedent_len() { |
There was a problem hiding this comment.
Here's another test case that currently panics:
#[test]
#[rustfmt::skip]
fn dedent_to_ignores_leading_form_feeds_when_checking_indentation() {
let x = [
" 1",
"\x0C\x0C 2",
].join("\n");
let y = [
"1",
"\x0C\x0C 2",
].join("\n");
assert_eq!(dedent_to(&x, ""), Some(y));
}There was a problem hiding this comment.
Cheers, I'll have a look at this after work and see if I can find more test cases to sure it up
| " baz" | ||
| ].join("\n"); | ||
| let first_result = dedent_to(&x, " ").unwrap(); | ||
| assert_eq!(dedent_to(&first_result, " "), Some(y)); |
There was a problem hiding this comment.
I found two more failing test cases
#[test]
#[rustfmt::skip]
fn dedent_to_preserves_less_indented_later_line() {
let x = [
" foo\n",
" bar\n",
].join("");
let y = [
"foo\n",
" bar\n",
].join("");
assert_eq!(dedent_to(&x, ""), Some(y));
}
#[test]
#[rustfmt::skip]
fn dedent_to_preserves_less_indented_later_line_with_crlf() {
let x = [
" foo\r\n",
" bar\r\n",
].join("");
let y = [
"foo\r\n",
" bar\r\n",
].join("");
assert_eq!(dedent_to(&x, ""), Some(y));
}311bea1 to
ced2ffe
Compare
|
cheers for your help it was a fun one 😄 |
* main: Add a "release-gate" step to the release workflow (#24365) Disallow starred expressions as values of starred expressions (#24280) [`pyupgrade`] Ignore strings with string-only escapes (`UP012`) (#16058) [ty] Improve consistency and quality of diagnostics relating to invalid type forms (#24325) [flake8-type-checking] Clarify import cycle wording for TC001/TC002/TC003 (#24322) [`flake8-errmsg`] Avoid shadowing existing `msg` in fix for `EM101` (#24363) `RUF072`: skip formfeeds on dedent (#24308) Replace unmaintained `unic-ucd-category` crate with `icu_properties` (#24344) [ty] Replace markdown hard line breaks in snapshot tests (#24361) [ty] Move snapshot for code action test with trailing whitespace to external file (#24359)
Summary
fixes: #24246
Skips the formfeed on the dedent if the line starts with the formfeed and then readds it back to the start of the line.
Test Plan
Added bug report example to snapshot test cases