mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-28 11:20:36 +00:00
Auto merge of #6021 - zachlute:validate-package-name, r=alexcrichton
Validate that the package name contains no invalid characters. Fixes #2388. Invalid characters are currently defined as alphanumeric, _, and -. This matches the rustc restrictions but is not as restrictive as `cargo new` or crates.io. Mostly this is just so there will be better error messages in the case where characters in the package name aren't valid path characters.
This commit is contained in:
commit
a5d8294948
@ -810,6 +810,16 @@ impl TomlManifest {
|
|||||||
bail!("package name cannot be an empty string")
|
bail!("package name cannot be an empty string")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for c in package_name.chars() {
|
||||||
|
if c.is_alphanumeric() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if c == '_' || c == '-' {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
bail!("Invalid character `{}` in package name: `{}`", c, package_name)
|
||||||
|
}
|
||||||
|
|
||||||
let pkgid = project.to_package_id(source_id)?;
|
let pkgid = project.to_package_id(source_id)?;
|
||||||
|
|
||||||
let edition = if let Some(ref edition) = project.edition {
|
let edition = if let Some(ref edition) = project.edition {
|
||||||
|
@ -257,7 +257,7 @@ Caused by:
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cargo_compile_with_invalid_package_name() {
|
fn cargo_compile_with_empty_package_name() {
|
||||||
let p = project()
|
let p = project()
|
||||||
.file("Cargo.toml", &basic_manifest("", "0.0.0"))
|
.file("Cargo.toml", &basic_manifest("", "0.0.0"))
|
||||||
.build();
|
.build();
|
||||||
@ -274,6 +274,24 @@ Caused by:
|
|||||||
).run();
|
).run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cargo_compile_with_invalid_package_name() {
|
||||||
|
let p = project()
|
||||||
|
.file("Cargo.toml", &basic_manifest("foo::bar", "0.0.0"))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
p.cargo("build")
|
||||||
|
.with_status(101)
|
||||||
|
.with_stderr(
|
||||||
|
"\
|
||||||
|
[ERROR] failed to parse manifest at `[..]`
|
||||||
|
|
||||||
|
Caused by:
|
||||||
|
Invalid character `:` in package name: `foo::bar`
|
||||||
|
",
|
||||||
|
).run();
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cargo_compile_with_invalid_bin_target_name() {
|
fn cargo_compile_with_invalid_bin_target_name() {
|
||||||
let p = project()
|
let p = project()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user