Skip to content

Commit

Permalink
Fix doc collision for lib/bin with a dash in the inferred name.
Browse files Browse the repository at this point in the history
  • Loading branch information
ehuss committed Mar 25, 2024
1 parent 9e7d6e3 commit 3adb796
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 18 deletions.
4 changes: 3 additions & 1 deletion src/cargo/ops/cargo_compile/unit_generator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,9 @@ impl<'a> UnitGenerator<'a, '_> {
.filter(|t| {
t.documented()
&& (!t.is_bin()
|| !targets.iter().any(|l| l.is_lib() && l.name() == t.name()))
|| !targets
.iter()
.any(|l| l.is_lib() && l.crate_name() == t.crate_name()))
})
.collect()
}
Expand Down
20 changes: 3 additions & 17 deletions tests/testsuite/doc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -488,30 +488,16 @@ fn doc_lib_bin_same_name_with_dash() {
.file("src/main.rs", "fn main() {}")
.build();
p.cargo("doc")
.with_stderr_unordered(
.with_stderr(
"\
warning: output filename collision.
The bin target `foo-bar` in package `foo-bar v1.0.0 ([ROOT]/foo)` has the same \
output filename as the lib target `foo_bar` in package `foo-bar v1.0.0 ([ROOT]/foo)`.
Colliding filename is: [ROOT]/foo/target/doc/foo_bar/index.html
The output filenames should be unique.
This is a known bug where multiple crates with the same name use
the same path; see <https://github.com/rust-lang/cargo/issues/6313>.
If this looks unexpected, it may be a bug in Cargo. Please file a bug report at
https://github.com/rust-lang/cargo/issues/ with as much information as you
can provide.
cargo [..]
First unit: [..]
Second unit: [..]
[CHECKING] foo-bar v1.0.0 ([ROOT]/foo)
[DOCUMENTING] foo-bar v1.0.0 ([ROOT]/foo)
[FINISHED] [..]
[GENERATED] [ROOT]/foo/target/doc/foo_bar/index.html and 1 other file
[GENERATED] [ROOT]/foo/target/doc/foo_bar/index.html
",
)
.run();
assert!(p.build_dir().join("doc/foo_bar/index.html").exists());
assert!(p.build_dir().join("doc/foo_bar/fn.main.html").exists());
assert!(!p.build_dir().join("doc/foo_bar/fn.main.html").exists());
}

#[cargo_test]
Expand Down

0 comments on commit 3adb796

Please sign in to comment.