mirror of https://github.com/astral-sh/uv
Warn on invalid `uv.toml` when provided via direct path (#14653)
## Summary We validate the `uv.toml` when it's discovered automatically, but not when provided via `--config-file`. The same limitations exist, though -- I think the lack of enforcement is just an oversight. Closes https://github.com/astral-sh/uv/issues/14650.
This commit is contained in:
parent
861f7a1c42
commit
03de6c36e3
|
|
@ -170,7 +170,12 @@ impl FilesystemOptions {
|
||||||
|
|
||||||
/// Load a [`FilesystemOptions`] from a `uv.toml` file.
|
/// Load a [`FilesystemOptions`] from a `uv.toml` file.
|
||||||
pub fn from_file(path: impl AsRef<Path>) -> Result<Self, Error> {
|
pub fn from_file(path: impl AsRef<Path>) -> Result<Self, Error> {
|
||||||
Ok(Self(read_file(path.as_ref())?))
|
let path = path.as_ref();
|
||||||
|
tracing::debug!("Reading user configuration from: `{}`", path.display());
|
||||||
|
|
||||||
|
let options = read_file(path)?;
|
||||||
|
validate_uv_toml(path, &options)?;
|
||||||
|
Ok(Self(options))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -267,7 +267,7 @@ fn invalid_toml_filename() -> Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn invalid_uv_toml_option_disallowed() -> Result<()> {
|
fn invalid_uv_toml_option_disallowed_automatic_discovery() -> Result<()> {
|
||||||
let context = TestContext::new("3.12");
|
let context = TestContext::new("3.12");
|
||||||
let uv_toml = context.temp_dir.child("uv.toml");
|
let uv_toml = context.temp_dir.child("uv.toml");
|
||||||
uv_toml.write_str(indoc! {r"
|
uv_toml.write_str(indoc! {r"
|
||||||
|
|
@ -288,6 +288,30 @@ fn invalid_uv_toml_option_disallowed() -> Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn invalid_uv_toml_option_disallowed_command_line() -> Result<()> {
|
||||||
|
let context = TestContext::new("3.12");
|
||||||
|
let uv_toml = context.temp_dir.child("foo.toml");
|
||||||
|
uv_toml.write_str(indoc! {r"
|
||||||
|
managed = true
|
||||||
|
"})?;
|
||||||
|
|
||||||
|
uv_snapshot!(context.pip_install()
|
||||||
|
.arg("iniconfig")
|
||||||
|
.arg("--config-file")
|
||||||
|
.arg("foo.toml"), @r"
|
||||||
|
success: false
|
||||||
|
exit_code: 2
|
||||||
|
----- stdout -----
|
||||||
|
|
||||||
|
----- stderr -----
|
||||||
|
error: Failed to parse: `foo.toml`. The `managed` field is not allowed in a `uv.toml` file. `managed` is only applicable in the context of a project, and should be placed in a `pyproject.toml` file instead.
|
||||||
|
"
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cache_uv_toml_credentials() -> Result<()> {
|
fn cache_uv_toml_credentials() -> Result<()> {
|
||||||
let context = TestContext::new("3.12");
|
let context = TestContext::new("3.12");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue