Fix need_dev_deps to return false during a default `cargo build` run
authorXimin Luo <infinity0@pwned.gg>
Thu, 15 Mar 2018 15:17:55 +0000 (16:17 +0100)
committerXimin Luo <infinity0@pwned.gg>
Thu, 15 Mar 2018 16:07:03 +0000 (17:07 +0100)
- Also add a mode param to need_dev_deps to make clear the intent

src/cargo/ops/cargo_compile.rs

index 4a63b1b23916deaf735a004350fe233fe0212d95..9d36436532c7295748c4e3ed9e77f2222dd31e34 100644 (file)
@@ -246,7 +246,7 @@ pub fn compile_ws<'a>(
     let specs = spec.into_package_id_specs(ws)?;
     let features = Method::split_features(features);
     let method = Method::Required {
-        dev_deps: ws.require_optional_deps() || filter.need_dev_deps(),
+        dev_deps: ws.require_optional_deps() || filter.need_dev_deps(mode),
         features: &features,
         all_features,
         uses_default_features: !no_default_features,
@@ -442,15 +442,19 @@ impl CompileFilter {
         }
     }
 
-    pub fn need_dev_deps(&self) -> bool {
-        match *self {
-            CompileFilter::Default { .. } => true,
-            CompileFilter::Only {
-                ref examples,
-                ref tests,
-                ref benches,
-                ..
-            } => examples.is_specific() || tests.is_specific() || benches.is_specific(),
+    pub fn need_dev_deps(&self, mode: CompileMode) -> bool {
+        match mode {
+            CompileMode::Test | CompileMode::Doctest | CompileMode::Bench => true,
+            CompileMode::Build | CompileMode::Doc { .. } | CompileMode::Check { .. } => match *self
+            {
+                CompileFilter::Default { .. } => false,
+                CompileFilter::Only {
+                    ref examples,
+                    ref tests,
+                    ref benches,
+                    ..
+                } => examples.is_specific() || tests.is_specific() || benches.is_specific(),
+            },
         }
     }