From: Simon Sapin Date: Thu, 23 Nov 2017 15:25:12 +0000 (+0100) Subject: Make default-members apply to non-virtual workspaces too X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~4^2~39^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8d5e73c63bb56d969727ebfdcc17565c5dc216c8;p=cargo.git Make default-members apply to non-virtual workspaces too --- diff --git a/src/cargo/core/workspace.rs b/src/cargo/core/workspace.rs index 856b2597f..d9307526b 100644 --- a/src/cargo/core/workspace.rs +++ b/src/cargo/core/workspace.rs @@ -399,8 +399,10 @@ impl<'cfg> Workspace<'cfg> { } self.default_members.push(manifest_path) } - } else { + } else if self.is_virtual() { self.default_members = self.members.clone() + } else { + self.default_members.push(self.current_manifest.clone()) } self.find_path_deps(&root_manifest_path, &root_manifest_path, false) diff --git a/src/cargo/ops/cargo_compile.rs b/src/cargo/ops/cargo_compile.rs index 9ef05f41d..53c5b99eb 100644 --- a/src/cargo/ops/cargo_compile.rs +++ b/src/cargo/ops/cargo_compile.rs @@ -149,18 +149,12 @@ impl<'a> Packages<'a> { Packages::Packages(packages) => { packages.iter().map(|p| PackageIdSpec::parse(p)).collect::>>()? } - Packages::Default if ws.is_virtual() => { + Packages::Default => { ws.default_members() .map(Package::package_id) .map(PackageIdSpec::from_package_id) .collect() } - Packages::Default => { - ws.current_opt() - .map(Package::package_id) - .map(PackageIdSpec::from_package_id) - .into_iter().collect() - } }; Ok(specs) } diff --git a/tests/workspaces.rs b/tests/workspaces.rs index 4f5b63cca..c90464318 100644 --- a/tests/workspaces.rs +++ b/tests/workspaces.rs @@ -46,6 +46,35 @@ fn simple_explicit() { assert_that(&p.root().join("bar/Cargo.lock"), is_not(existing_file())); } +#[test] +fn simple_explicit_default_members() { + let p = project("foo") + .file("Cargo.toml", r#" + [project] + name = "foo" + version = "0.1.0" + authors = [] + + [workspace] + members = ["bar"] + default-members = ["bar"] + "#) + .file("src/main.rs", "fn main() {}") + .file("bar/Cargo.toml", r#" + [project] + name = "bar" + version = "0.1.0" + authors = [] + workspace = ".." + "#) + .file("bar/src/main.rs", "fn main() {}"); + let p = p.build(); + + assert_that(p.cargo("build"), execs().with_status(0)); + assert_that(&p.bin("bar"), existing_file()); + assert_that(&p.bin("foo"), is_not(existing_file())); +} + #[test] fn inferred_root() { let p = project("foo")