diff --git a/crates/ruff_cli/tests/format.rs b/crates/ruff_cli/tests/format.rs index f31b5bde78aa7d..232635b8e30476 100644 --- a/crates/ruff_cli/tests/format.rs +++ b/crates/ruff_cli/tests/format.rs @@ -672,7 +672,8 @@ format = "json" ----- stderr ----- ruff failed - Cause: Failed to parse `[RUFF-TOML-PATH]`: TOML parse error at line 2, column 10 + Cause: Failed to parse [RUFF-TOML-PATH] + Cause: TOML parse error at line 2, column 10 | 2 | format = "json" | ^^^^^^ diff --git a/crates/ruff_cli/tests/integration_test.rs b/crates/ruff_cli/tests/integration_test.rs index 1ee634f6c09d31..f4793e7914b7ef 100644 --- a/crates/ruff_cli/tests/integration_test.rs +++ b/crates/ruff_cli/tests/integration_test.rs @@ -1047,7 +1047,10 @@ fn unreadable_pyproject_toml() -> Result<()> { err.chain() .map(std::string::ToString::to_string) .collect::>(), - vec!["Permission denied (os error 13)".to_string()], + vec![ + format!("Failed to read {}/pyproject.toml", tempdir.path().display()), + "Permission denied (os error 13)".to_string() + ], ); Ok(()) } diff --git a/crates/ruff_workspace/src/pyproject.rs b/crates/ruff_workspace/src/pyproject.rs index 3fe7fe35bc3c6b..c5d610f0c7fd7f 100644 --- a/crates/ruff_workspace/src/pyproject.rs +++ b/crates/ruff_workspace/src/pyproject.rs @@ -2,7 +2,7 @@ use std::path::{Path, PathBuf}; -use anyhow::Result; +use anyhow::{Context, Result}; use log::debug; use pep440_rs::VersionSpecifiers; use serde::{Deserialize, Serialize}; @@ -41,14 +41,18 @@ impl Pyproject { /// Parse a `ruff.toml` file. fn parse_ruff_toml>(path: P) -> Result { - let contents = std::fs::read_to_string(path)?; - toml::from_str(&contents).map_err(Into::into) + let contents = std::fs::read_to_string(path.as_ref()) + .with_context(|| format!("Failed to read {}", path.as_ref().display()))?; + toml::from_str(&contents) + .with_context(|| format!("Failed to parse {}", path.as_ref().display())) } /// Parse a `pyproject.toml` file. fn parse_pyproject_toml>(path: P) -> Result { - let contents = std::fs::read_to_string(path)?; - toml::from_str(&contents).map_err(Into::into) + let contents = std::fs::read_to_string(path.as_ref()) + .with_context(|| format!("Failed to read {}", path.as_ref().display()))?; + toml::from_str(&contents) + .with_context(|| format!("Failed to parse {}", path.as_ref().display())) } /// Return `true` if a `pyproject.toml` contains a `[tool.ruff]` section. diff --git a/crates/ruff_workspace/src/resolver.rs b/crates/ruff_workspace/src/resolver.rs index 93df74b1e2aad9..ac1f94294a9ff2 100644 --- a/crates/ruff_workspace/src/resolver.rs +++ b/crates/ruff_workspace/src/resolver.rs @@ -220,8 +220,7 @@ fn resolve_configuration( } // Resolve the current path. - let options = pyproject::load_options(&path) - .map_err(|err| anyhow!("Failed to parse `{}`: {}", path.display(), err))?; + let options = pyproject::load_options(&path)?; let project_root = relativity.resolve(&path); let configuration = Configuration::from_options(options, &project_root)?;