diff --git a/src/cargo/ops/cargo_package.rs b/src/cargo/ops/cargo_package.rs index b78d0292882..f80848c7596 100644 --- a/src/cargo/ops/cargo_package.rs +++ b/src/cargo/ops/cargo_package.rs @@ -332,10 +332,7 @@ fn check_for_file_and_add( Err(_) => { // The file exists somewhere outside of the package. let file_name = file_path.file_name().unwrap(); - if result - .iter() - .any(|ar| ar.rel_path.file_name().unwrap() == file_name) - { + if result.iter().any(|ar| ar.rel_path == file_name) { ws.config().shell().warn(&format!( "{} `{}` appears to be a path outside of the package, \ but there is already a file named `{}` in the root of the package. \ diff --git a/tests/testsuite/package.rs b/tests/testsuite/package.rs index 0505f836300..3b432824295 100644 --- a/tests/testsuite/package.rs +++ b/tests/testsuite/package.rs @@ -2535,6 +2535,91 @@ See [..] assert!(p.root().join("target/package/bar-0.0.1.crate").is_file()); } +#[cargo_test] +fn workspace_noconflict_readme() { + let p = project() + .file( + "Cargo.toml", + r#" + [workspace] + members = ["bar"] + "#, + ) + .file("README.md", "workspace readme") + .file( + "bar/Cargo.toml", + r#" + [package] + name = "bar" + version = "0.0.1" + repository = "https://github.com/bar/bar" + authors = [] + license = "MIT" + description = "bar" + readme = "../README.md" + workspace = ".." + "#, + ) + .file("bar/src/main.rs", "fn main() {}") + .file("bar/example/README.md", "# example readmdBar") + .build(); + + p.cargo("package") + .with_stderr( + "\ +[PACKAGING] bar v0.0.1 ([CWD]/bar) +[VERIFYING] bar v0.0.1 ([CWD]/bar) +[COMPILING] bar v0.0.1 ([CWD]/[..]) +[FINISHED] dev [unoptimized + debuginfo] target(s) in [..] +[PACKAGED] [..] files, [..] ([..] compressed) +", + ) + .run(); +} + +#[cargo_test] +fn workspace_conflict_readme() { + let p = project() + .file( + "Cargo.toml", + r#" + [workspace] + members = ["bar"] + "#, + ) + .file("README.md", "workspace readme") + .file( + "bar/Cargo.toml", + r#" + [package] + name = "bar" + version = "0.0.1" + repository = "https://github.com/bar/bar" + authors = [] + license = "MIT" + description = "bar" + readme = "../README.md" + workspace = ".." + "#, + ) + .file("bar/src/main.rs", "fn main() {}") + .file("bar/README.md", "# workspace member: Bar") + .build(); + + p.cargo("package") + .with_stderr( + "\ +warning: readme `../README.md` appears to be a path outside of the package, but there is already a file named `README.md` in the root of the package. The archived crate will contain the copy in the root of the package. Update the readme to point to the path relative to the root of the package to remove this warning. +[PACKAGING] bar v0.0.1 ([CWD]/bar) +[VERIFYING] bar v0.0.1 ([CWD]/bar) +[COMPILING] bar v0.0.1 ([CWD]/[..]) +[FINISHED] dev [unoptimized + debuginfo] target(s) in [..] +[PACKAGED] [..] files, [..] ([..] compressed) +", + ) + .run(); +} + #[cargo_test] fn workspace_overrides_resolver() { let p = project()