From db2e31407721bdc3d7c279f6c83b748ff5f09740 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 13 Dec 2023 11:37:08 -0600 Subject: [PATCH] fix: Improve registry name errors? Because of workspace inheritance, the errors aren't the greatest --- src/cargo/util_schemas/manifest.rs | 11 ++++++++++- tests/testsuite/alt_registry.rs | 18 ++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/cargo/util_schemas/manifest.rs b/src/cargo/util_schemas/manifest.rs index dac50345c..171c4136d 100644 --- a/src/cargo/util_schemas/manifest.rs +++ b/src/cargo/util_schemas/manifest.rs @@ -572,7 +572,7 @@ impl<'de, P: Deserialize<'de> + Clone> de::Deserialize<'de> for TomlDependency

{ pub version: Option, - pub registry: Option, + pub registry: Option, /// The URL of the `registry` field. /// This is an internal implementation detail. When Cargo creates a /// package, it replaces `registry` with `registry-index` so that the @@ -1177,6 +1177,15 @@ impl> PackageName { } } +str_newtype!(RegistryName); + +impl> RegistryName { + pub fn new(name: T) -> Result { + restricted_names::validate_package_name(name.as_ref(), "registry name", "")?; + Ok(Self(name)) + } +} + str_newtype!(ProfileName); impl> ProfileName { diff --git a/tests/testsuite/alt_registry.rs b/tests/testsuite/alt_registry.rs index 8982b1941..e347af1c7 100644 --- a/tests/testsuite/alt_registry.rs +++ b/tests/testsuite/alt_registry.rs @@ -715,7 +715,14 @@ fn bad_registry_name() { [ERROR] failed to parse manifest at `[CWD]/Cargo.toml` Caused by: - invalid character ` ` in registry name: `bad name`, [..]", + TOML parse error at line 7, column 17 + | + 7 | [dependencies.bar] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + invalid character ` ` in registry name: `bad name`, [..] + + +", ) .run(); @@ -1618,7 +1625,14 @@ fn empty_dependency_registry() { [ERROR] failed to parse manifest at `[CWD]/Cargo.toml` Caused by: - registry name cannot be empty", + TOML parse error at line 7, column 23 + | + 7 | bar = { version = \"0.1.0\", registry = \"\" } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + registry name cannot be empty + + +", ) .run(); }