From 148b64ead320accd3bf9d33a6d96129b30e413a7 Mon Sep 17 00:00:00 2001 From: Jane Lewis Date: Thu, 1 Feb 2024 14:07:21 -0800 Subject: [PATCH] Fix issue where output format mode would not change to `full` if preview mode was set in configuration file (#9763) ## Summary This was causing build failures for #9599. We were referencing the command line overrides instead of the merged configuration data, hence the issue. ## Test Plan A snapshot test was added. --- crates/ruff/src/lib.rs | 6 +++++- crates/ruff/tests/integration_test.rs | 29 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/crates/ruff/src/lib.rs b/crates/ruff/src/lib.rs index 38fdcb8c4eea7..303703ad6b3b6 100644 --- a/crates/ruff/src/lib.rs +++ b/crates/ruff/src/lib.rs @@ -321,7 +321,11 @@ pub fn check(args: CheckCommand, log_level: LogLevel) -> Result { printer_flags, ); - let preview = overrides.preview.unwrap_or_default().is_enabled(); + // the settings should already be combined with the CLI overrides at this point + // TODO(jane): let's make this `PreviewMode` + // TODO: this should reference the global preview mode once https://github.com/astral-sh/ruff/issues/8232 + // is resolved. + let preview = pyproject_config.settings.linter.preview.is_enabled(); if cli.watch { if output_format != SerializationFormat::default(preview) { diff --git a/crates/ruff/tests/integration_test.rs b/crates/ruff/tests/integration_test.rs index b794495d1fd80..f9e9c221acdd5 100644 --- a/crates/ruff/tests/integration_test.rs +++ b/crates/ruff/tests/integration_test.rs @@ -755,6 +755,35 @@ fn full_output_preview() { "###); } +#[test] +fn full_output_preview_config() -> Result<()> { + let tempdir = TempDir::new()?; + let pyproject_toml = tempdir.path().join("pyproject.toml"); + fs::write( + &pyproject_toml, + r#" +[tool.ruff] +preview = true +"#, + )?; + let mut cmd = RuffCheck::default().config(&pyproject_toml).build(); + assert_cmd_snapshot!(cmd.pass_stdin("l = 1"), @r###" + success: false + exit_code: 1 + ----- stdout ----- + -:1:1: E741 Ambiguous variable name: `l` + | + 1 | l = 1 + | ^ E741 + | + + Found 1 error. + + ----- stderr ----- + "###); + Ok(()) +} + #[test] fn full_output_format() { let mut cmd = RuffCheck::default().output_format("full").build();