From 74dbd871f8353d0c1c0a06e84604913292fa4819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leiser=20Fern=C3=A1ndez=20Gallo?= Date: Thu, 21 Sep 2023 22:50:23 +0200 Subject: [PATCH] Make ruff format idempotent when using stdin input (#7581) ## Summary Currently, this happens ```sh $ echo "print()" | ruff format - #Notice that nothing went to stdout ``` Which does not match `ruff check --fix - ` behavior and deletes my code every time I format it (more or less 5 times per minute :smile:). I just checked that my example works as the change was very straightforward. --- crates/ruff_cli/src/commands/format_stdin.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/crates/ruff_cli/src/commands/format_stdin.rs b/crates/ruff_cli/src/commands/format_stdin.rs index b428d3d14724d..f4d8a6b089e5b 100644 --- a/crates/ruff_cli/src/commands/format_stdin.rs +++ b/crates/ruff_cli/src/commands/format_stdin.rs @@ -71,15 +71,16 @@ fn format_source( let formatted = format_module(&unformatted, options) .map_err(|err| FormatCommandError::FormatModule(path.map(Path::to_path_buf), err))?; let formatted = formatted.as_code(); + + if mode.is_write() { + stdout() + .lock() + .write_all(formatted.as_bytes()) + .map_err(|err| FormatCommandError::Write(path.map(Path::to_path_buf), err))?; + } if formatted.len() == unformatted.len() && formatted == unformatted { Ok(FormatCommandResult::Unchanged) } else { - if mode.is_write() { - stdout() - .lock() - .write_all(formatted.as_bytes()) - .map_err(|err| FormatCommandError::Write(path.map(Path::to_path_buf), err))?; - } Ok(FormatCommandResult::Formatted) } }