]> git.proxmox.com Git - cargo.git/commitdiff
Copy `--all-features` request to all workspace members
authorAlex Crichton <alex@alexcrichton.com>
Mon, 21 May 2018 19:57:25 +0000 (12:57 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Mon, 21 May 2018 20:38:40 +0000 (13:38 -0700)
This fixes an accidental regression introduced in #5012 where the
`--all-features` CLI flag was only propagated to the "main crate" as opposed to
all workspace packages. This behavior has [already been deemed][pr] as
"basically not what you want", but for now it's best to avoid the regression.

Closes #5518

[pr]: https://github.com/rust-lang/cargo/pull/5353

src/cargo/ops/resolve.rs
tests/testsuite/features.rs

index 8df8e4da6b4053265b09856b151d054a225ff6f0..5a700a7d28f24c0996fd2647db5d63aff0911402 100644 (file)
@@ -272,11 +272,11 @@ pub fn resolve_with_previous<'a, 'cfg>(
                 // workspace, then we use `method` specified. Otherwise we use a
                 // base method with no features specified but using default features
                 // for any other packages specified with `-p`.
-                Method::Required { dev_deps, .. } => {
+                Method::Required { dev_deps, all_features, .. } => {
                     let base = Method::Required {
                         dev_deps,
                         features: &[],
-                        all_features: false,
+                        all_features,
                         uses_default_features: true,
                     };
                     let member_id = member.package_id();
index 3312595de7d1125c3877b28e0fdfb6f6db6e9241..dcd8b6e280f3b85eb408078096aac32894c5948e 100644 (file)
@@ -2031,3 +2031,42 @@ fn only_dep_is_optional() {
         execs().with_status(0),
     );
 }
+
+#[test]
+fn all_features_all_crates() {
+    Package::new("bar", "0.1.0").publish();
+
+    let p = project("foo")
+        .file(
+            "Cargo.toml",
+            r#"
+                [project]
+                name = "foo"
+                version = "0.0.1"
+                authors = []
+
+                [workspace]
+                members = ['bar']
+            "#,
+        )
+        .file("src/main.rs", "fn main() {}")
+        .file(
+            "bar/Cargo.toml",
+            r#"
+                [project]
+                name = "bar"
+                version = "0.0.1"
+                authors = []
+
+                [features]
+                foo = []
+            "#,
+        )
+        .file("bar/src/main.rs", "#[cfg(feature = \"foo\")] fn main() {}")
+        .build();
+
+    assert_that(
+        p.cargo("build --all-features --all"),
+        execs().with_status(0),
+    );
+}