From: Anthony Ramine Date: Thu, 7 Dec 2017 14:13:46 +0000 (+0100) Subject: Don't accumulate feature and rustdoc flags twice (fixes #4790) X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~4^2~13^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c057d9e2068d85d0eefeb9d588cf8db1526b0afd;p=cargo.git Don't accumulate feature and rustdoc flags twice (fixes #4790) --- diff --git a/src/cargo/ops/cargo_rustc/mod.rs b/src/cargo/ops/cargo_rustc/mod.rs index bc0c812ca..23998877b 100644 --- a/src/cargo/ops/cargo_rustc/mod.rs +++ b/src/cargo/ops/cargo_rustc/mod.rs @@ -226,14 +226,15 @@ pub fn compile_targets<'a, 'cfg: 'a>(ws: &Workspace<'cfg>, } let feats = cx.resolve.features(unit.pkg.package_id()); - cx.compilation.cfgs.entry(unit.pkg.package_id().clone()) - .or_insert_with(HashSet::new) - .extend(feats.iter().map(|feat| format!("feature=\"{}\"", feat))); + if !feats.is_empty() { + cx.compilation.cfgs.entry(unit.pkg.package_id().clone()).or_insert_with(|| { + feats.iter().map(|feat| format!("feature=\"{}\"", feat)).collect() + }); + } let rustdocflags = cx.rustdocflags_args(&unit)?; if !rustdocflags.is_empty() { cx.compilation.rustdocflags.entry(unit.pkg.package_id().clone()) - .or_insert_with(Vec::new) - .extend(rustdocflags); + .or_insert(rustdocflags); } output_depinfo(&mut cx, unit)?; diff --git a/tests/rustdocflags.rs b/tests/rustdocflags.rs index e8bc2fad9..19c496426 100644 --- a/tests/rustdocflags.rs +++ b/tests/rustdocflags.rs @@ -105,3 +105,18 @@ fn rustdocflags_passed_to_rustdoc_through_cargo_test() { assert_that(p.cargo("test").arg("--doc").env("RUSTDOCFLAGS", "--cfg do_not_choke"), execs().with_status(0)); } + +#[test] +fn rustdocflags_passed_to_rustdoc_through_cargo_test_only_once() { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", "") + .build(); + + assert_that(p.cargo("test").arg("--doc").env("RUSTDOCFLAGS", "--markdown-no-toc"), + execs().with_status(0)); +}