mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
Auto merge of #13640 - ehuss:fix-doc-dash-collision, r=epage
Fix doc collision for lib/bin with a dash in the inferred name. This fixes an issue where `cargo doc` would report a collision if the project has a `-` in the name, and both a lib and bin. As a consequence of the change in #12783, the target name for the library no longer has a `-`. The code that checks for the lib/bin doc collision was only checking if the target names were equal, which is no longer the case after #12783. The solution here is to use the `crate_name` and not the target name, which has the appropriate `_` translation done. This is the more correct method to use, even before #12783, because rustdoc uses crate names, not target names (and thus even documenting bins have their filenames converted to underscores). Fixes #13628
This commit is contained in:
commit
c56140f646
@ -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()
|
||||
}
|
||||
|
@ -478,6 +478,28 @@ fn doc_lib_bin_same_name_documents_lib_when_requested() {
|
||||
assert!(!doc_html.contains("Binary"));
|
||||
}
|
||||
|
||||
#[cargo_test]
|
||||
fn doc_lib_bin_same_name_with_dash() {
|
||||
// Checks `doc` behavior when there is a dash in the package name, and
|
||||
// there is a lib and bin, and the lib name is inferred.
|
||||
let p = project()
|
||||
.file("Cargo.toml", &basic_manifest("foo-bar", "1.0.0"))
|
||||
.file("src/lib.rs", "")
|
||||
.file("src/main.rs", "fn main() {}")
|
||||
.build();
|
||||
p.cargo("doc")
|
||||
.with_stderr(
|
||||
"\
|
||||
[DOCUMENTING] foo-bar v1.0.0 ([ROOT]/foo)
|
||||
[FINISHED] [..]
|
||||
[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());
|
||||
}
|
||||
|
||||
#[cargo_test]
|
||||
fn doc_lib_bin_same_name_documents_named_bin_when_requested() {
|
||||
let p = project()
|
||||
|
Loading…
x
Reference in New Issue
Block a user