From 037a879dbd677358118ebd2716538c68f6ba98a9 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Mon, 30 Apr 2018 20:39:07 -0700 Subject: [PATCH] Better error message for `cargo rustc` in a workspace. Fixes #5371 --- src/cargo/ops/cargo_compile.rs | 8 +++----- tests/testsuite/workspaces.rs | 32 +++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/cargo/ops/cargo_compile.rs b/src/cargo/ops/cargo_compile.rs index 624659784..cbf03a71b 100644 --- a/src/cargo/ops/cargo_compile.rs +++ b/src/cargo/ops/cargo_compile.rs @@ -217,11 +217,9 @@ impl Packages { .map(PackageIdSpec::from_package_id) .filter(|p| opt_out.iter().position(|x| *x == p.name()).is_none()) .collect(), - Packages::Packages(ref packages) if packages.is_empty() => ws.current_opt() - .map(Package::package_id) - .map(PackageIdSpec::from_package_id) - .into_iter() - .collect(), + Packages::Packages(ref packages) if packages.is_empty() => { + vec![PackageIdSpec::from_package_id(ws.current()?.package_id())] + } Packages::Packages(ref packages) => packages .iter() .map(|p| PackageIdSpec::parse(p)) diff --git a/tests/testsuite/workspaces.rs b/tests/testsuite/workspaces.rs index 191c518f3..d49600578 100644 --- a/tests/testsuite/workspaces.rs +++ b/tests/testsuite/workspaces.rs @@ -3,7 +3,7 @@ use std::fs::{self, File}; use std::io::{Read, Write}; use cargotest::sleep_ms; -use cargotest::support::{execs, git, project}; +use cargotest::support::{basic_lib_manifest, execs, git, project}; use cargotest::support::registry::Package; use hamcrest::{assert_that, existing_dir, existing_file, is_not}; @@ -2338,3 +2338,33 @@ fn relative_rustc() { let file = format!("./foo{}", env::consts::EXE_SUFFIX); assert_that(p.cargo("build").env("RUSTC", &file), execs().with_status(0)); } + + +#[test] +fn ws_rustc_err() { + let p = project("ws") + .file( + "Cargo.toml", + r#" + [workspace] + members = ["a"] + "#, + ) + .file("a/Cargo.toml", &basic_lib_manifest("a")) + .file("a/src/lib.rs", "") + .build(); + + assert_that( + p.cargo("rustc"), + execs() + .with_status(101) + .with_stderr("[ERROR] [..]against an actual package[..]"), + ); + + assert_that( + p.cargo("rustdoc"), + execs() + .with_status(101) + .with_stderr("[ERROR] [..]against an actual package[..]"), + ); +}