Skip to content

Commit 2db5c9d

Browse files
committed
fix(new): Catch empty package names earlier
1 parent 9de03cd commit 2db5c9d

File tree

3 files changed

+6
-9
lines changed

3 files changed

+6
-9
lines changed

src/cargo/ops/cargo_new.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::util::important_paths::find_root_manifest_for_wd;
44
use crate::util::toml_mut::is_sorted;
55
use crate::util::{existing_vcs_repo, FossilRepo, GitRepo, HgRepo, PijulRepo};
66
use crate::util::{restricted_names, Config};
7-
use anyhow::{anyhow, Context};
7+
use anyhow::{anyhow, bail, Context};
88
use cargo_util::paths::{self, write_atomic};
99
use serde::de;
1010
use serde::Deserialize;
@@ -197,6 +197,9 @@ fn check_name(
197197
}
198198
help
199199
};
200+
if name.is_empty() {
201+
bail!("package name cannot be empty");
202+
}
200203
restricted_names::validate_package_name(name, "package name", &bin_help())?;
201204

202205
if restricted_names::is_keyword(name) {

tests/testsuite/cargo_new/empty_name/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ fn case() {
1414
.args(["foo", "--name", ""])
1515
.current_dir(cwd)
1616
.assert()
17-
.success()
17+
.failure()
1818
.stdout_matches_path(curr_dir!().join("stdout.log"))
1919
.stderr_matches_path(curr_dir!().join("stderr.log"));
2020

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1 @@
1-
warning: compiling this new package may not work due to invalid workspace configuration
2-
3-
failed to parse manifest at `[ROOT]/case/foo/Cargo.toml`
4-
5-
Caused by:
6-
package name cannot be an empty string
7-
Created binary (application) `` package
1+
error: package name cannot be empty

0 commit comments

Comments
 (0)