From: Aleksey Kladov Date: Sun, 17 Sep 2017 17:58:14 +0000 (+0300) Subject: Move cargo features to top-level X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~6^2~51^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=70edd72e6cbd3140c704e7c1133289dc5a954bd9;p=cargo.git Move cargo features to top-level This should allow to add Cargo-features to virtual manifest as well. --- diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 7b802c317..1fe1771e5 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -222,6 +222,8 @@ pub struct TomlManifest { patch: Option>>, workspace: Option, badges: Option>>, + #[serde(rename = "cargo-features")] + cargo_features: Option>, } #[derive(Deserialize, Serialize, Clone, Debug, Default)] @@ -389,8 +391,6 @@ pub struct TomlProject { include: Option>, publish: Option, workspace: Option, - #[serde(rename = "cargo-features")] - cargo_features: Option>, #[serde(rename = "im-a-teapot")] im_a_teapot: Option, @@ -472,6 +472,7 @@ impl TomlManifest { patch: None, workspace: None, badges: self.badges.clone(), + cargo_features: self.cargo_features.clone(), }; fn map_deps(deps: Option<&HashMap>) @@ -649,7 +650,7 @@ impl TomlManifest { let profiles = build_profiles(&me.profile); let publish = project.publish.unwrap_or(true); let empty = Vec::new(); - let cargo_features = project.cargo_features.as_ref().unwrap_or(&empty); + let cargo_features = me.cargo_features.as_ref().unwrap_or(&empty); let features = Features::new(&cargo_features, &mut warnings)?; let mut manifest = Manifest::new(summary, targets, diff --git a/tests/cargo-features.rs b/tests/cargo-features.rs index 8ffc63d58..55387fa7b 100644 --- a/tests/cargo-features.rs +++ b/tests/cargo-features.rs @@ -52,11 +52,12 @@ switch to nightly channel you can add fn unknown_feature() { let p = project("foo") .file("Cargo.toml", r#" + cargo-features = ["foo"] + [package] name = "a" version = "0.0.1" authors = [] - cargo-features = ["foo"] "#) .file("src/lib.rs", ""); assert_that(p.cargo_process("build"), @@ -73,11 +74,12 @@ Caused by: fn stable_feature_warns() { let p = project("foo") .file("Cargo.toml", r#" + cargo-features = ["test-dummy-stable"] + [package] name = "a" version = "0.0.1" authors = [] - cargo-features = ["test-dummy-stable"] "#) .file("src/lib.rs", ""); assert_that(p.cargo_process("build"), @@ -94,12 +96,13 @@ necessary to be listed in the manifest fn nightly_feature_requires_nightly() { let p = project("foo") .file("Cargo.toml", r#" + cargo-features = ["test-dummy-unstable"] + [package] name = "a" version = "0.0.1" authors = [] im-a-teapot = true - cargo-features = ["test-dummy-unstable"] "#) .file("src/lib.rs", ""); assert_that(p.cargo_process("build") @@ -135,12 +138,13 @@ fn nightly_feature_requires_nightly_in_dep() { "#) .file("src/lib.rs", "") .file("a/Cargo.toml", r#" + cargo-features = ["test-dummy-unstable"] + [package] name = "a" version = "0.0.1" authors = [] im-a-teapot = true - cargo-features = ["test-dummy-unstable"] "#) .file("a/src/lib.rs", ""); assert_that(p.cargo_process("build") @@ -173,12 +177,13 @@ Caused by: fn cant_publish() { let p = project("foo") .file("Cargo.toml", r#" + cargo-features = ["test-dummy-unstable"] + [package] name = "a" version = "0.0.1" authors = [] im-a-teapot = true - cargo-features = ["test-dummy-unstable"] "#) .file("src/lib.rs", ""); assert_that(p.cargo_process("build") @@ -204,12 +209,13 @@ Caused by: fn z_flags_rejected() { let p = project("foo") .file("Cargo.toml", r#" + cargo-features = ["test-dummy-unstable"] + [package] name = "a" version = "0.0.1" authors = [] im-a-teapot = true - cargo-features = ["test-dummy-unstable"] "#) .file("src/lib.rs", ""); assert_that(p.cargo_process("build") @@ -242,11 +248,12 @@ error: unknown `-Z` flag specified: arg fn publish_rejected() { let p = project("foo") .file("Cargo.toml", r#" + cargo-features = ["test-dummy-unstable"] + [package] name = "a" version = "0.0.1" authors = [] - cargo-features = ["test-dummy-unstable"] "#) .file("src/lib.rs", ""); assert_that(p.cargo_process("package")