Better error message for cargo rustc in a workspace.

Fixes #5371
This commit is contained in:
Eric Huss 2018-04-30 20:39:07 -07:00
parent 0d377b6f34
commit 037a879dbd
2 changed files with 34 additions and 6 deletions

View file

@ -217,11 +217,9 @@ impl Packages {
.map(PackageIdSpec::from_package_id) .map(PackageIdSpec::from_package_id)
.filter(|p| opt_out.iter().position(|x| *x == p.name()).is_none()) .filter(|p| opt_out.iter().position(|x| *x == p.name()).is_none())
.collect(), .collect(),
Packages::Packages(ref packages) if packages.is_empty() => ws.current_opt() Packages::Packages(ref packages) if packages.is_empty() => {
.map(Package::package_id) vec![PackageIdSpec::from_package_id(ws.current()?.package_id())]
.map(PackageIdSpec::from_package_id) }
.into_iter()
.collect(),
Packages::Packages(ref packages) => packages Packages::Packages(ref packages) => packages
.iter() .iter()
.map(|p| PackageIdSpec::parse(p)) .map(|p| PackageIdSpec::parse(p))

View file

@ -3,7 +3,7 @@ use std::fs::{self, File};
use std::io::{Read, Write}; use std::io::{Read, Write};
use cargotest::sleep_ms; 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 cargotest::support::registry::Package;
use hamcrest::{assert_that, existing_dir, existing_file, is_not}; 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); let file = format!("./foo{}", env::consts::EXE_SUFFIX);
assert_that(p.cargo("build").env("RUSTC", &file), execs().with_status(0)); 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[..]"),
);
}