From 901018c3db34304b96f5dfab525ef3b55cb0d8ae Mon Sep 17 00:00:00 2001 From: Shankar Mathiah Nanjundan Date: Sat, 30 Sep 2023 01:53:03 -0700 Subject: [PATCH] Fixes #2708 Warns about not using snake_case or kebab-case format when creating new packages with `cargo new` command. --- src/cargo/ops/cargo_new.rs | 6 ++++++ tests/testsuite/new.rs | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/cargo/ops/cargo_new.rs b/src/cargo/ops/cargo_new.rs index 78b3cc4f6d5..db42525a519 100644 --- a/src/cargo/ops/cargo_new.rs +++ b/src/cargo/ops/cargo_new.rs @@ -258,6 +258,12 @@ fn check_name( name ))?; } + let name_in_lowercase = name.to_lowercase(); + if name != name_in_lowercase { + shell.warn(format!( + "the name `{name}` is not snake_case or kebab-case which is recommended for package names, consider `{name_in_lowercase}`" + ))?; + } Ok(()) } diff --git a/tests/testsuite/new.rs b/tests/testsuite/new.rs index 91a2871e97e..254ed154cd6 100644 --- a/tests/testsuite/new.rs +++ b/tests/testsuite/new.rs @@ -451,6 +451,7 @@ fn non_ascii_name() { "\ [WARNING] the name `Привет` contains non-ASCII characters Non-ASCII crate names are not supported by Rust. +[WARNING] the name `Привет` is not snake_case or kebab-case which is recommended for package names, consider `привет` [CREATED] binary (application) `Привет` package ", ) @@ -501,6 +502,29 @@ or change the name in Cargo.toml with: .run(); } +#[cargo_test] +fn non_snake_case_name() { + cargo_process("new UPPERcase_name") + .with_stderr( + "\ +[WARNING] the name `UPPERcase_name` is not snake_case or kebab-case which is recommended for package names, consider `uppercase_name` +[CREATED] binary (application) `UPPERcase_name` package +", + ) + .run(); +} + +#[cargo_test] +fn kebab_case_name_is_accepted() { + cargo_process("new kebab-case-is-valid") + .with_stderr( + "\ +[CREATED] binary (application) `kebab-case-is-valid` package +", + ) + .run(); +} + #[cargo_test] fn git_default_branch() { // Check for init.defaultBranch support.