From ef24de24a82fe681581cc130f342363c47c0969a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 7 Jun 2024 07:48:48 +0200 Subject: Merging upstream version 1.75.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/cargo_metadata/tests/selftest.rs | 17 ++++++++ vendor/cargo_metadata/tests/test_samples.rs | 61 +++++++++++++++++++++++------ 2 files changed, 65 insertions(+), 13 deletions(-) (limited to 'vendor/cargo_metadata/tests') diff --git a/vendor/cargo_metadata/tests/selftest.rs b/vendor/cargo_metadata/tests/selftest.rs index d6ab61832..dbcc67ec2 100644 --- a/vendor/cargo_metadata/tests/selftest.rs +++ b/vendor/cargo_metadata/tests/selftest.rs @@ -161,3 +161,20 @@ fn metadata_deps() { assert!(serde.req.matches(&Version::parse("1.99.99").unwrap())); assert!(!serde.req.matches(&Version::parse("2.0.0").unwrap())); } + +#[test] +fn workspace_default_packages() { + use cargo_metadata::workspace_default_members_is_missing; + + let metadata = MetadataCommand::new() + .manifest_path("Cargo.toml") + .exec() + .unwrap(); + let workspace_packages = metadata.workspace_packages(); + // this will only trigger on cargo versions that expose + // workspace_default_members (that is, cargo >= 1.71) + if !workspace_default_members_is_missing(&metadata.workspace_default_members) { + let default_packages = metadata.workspace_default_packages(); + assert_eq!(default_packages, workspace_packages); + } +} diff --git a/vendor/cargo_metadata/tests/test_samples.rs b/vendor/cargo_metadata/tests/test_samples.rs index 15128b075..c834778af 100644 --- a/vendor/cargo_metadata/tests/test_samples.rs +++ b/vendor/cargo_metadata/tests/test_samples.rs @@ -5,19 +5,19 @@ extern crate serde_json; use camino::Utf8PathBuf; use cargo_metadata::{ - ArtifactDebuginfo, CargoOpt, DependencyKind, Edition, Message, Metadata, MetadataCommand, + workspace_default_members_is_missing, ArtifactDebuginfo, CargoOpt, DependencyKind, Edition, + Message, Metadata, MetadataCommand, }; -#[test] -fn old_minimal() { - // Output from oldest supported version (1.24). - // This intentionally has as many null fields as possible. - // 1.8 is when metadata was introduced. - // Older versions not supported because the following are required: - // - `workspace_members` added in 1.13 - // - `target_directory` added in 1.19 - // - `workspace_root` added in 1.24 - let json = r#" +/// Output from oldest version ever supported (1.24). +/// +/// This intentionally has as many null fields as possible. +/// 1.8 is when metadata was introduced. +/// Older versions not supported because the following are required: +/// - `workspace_members` added in 1.13 +/// - `target_directory` added in 1.19 +/// - `workspace_root` added in 1.24 +const JSON_OLD_MINIMAL: &str = r#" { "packages": [ { @@ -65,7 +65,10 @@ fn old_minimal() { "workspace_root": "/foo" } "#; - let meta: Metadata = serde_json::from_str(json).unwrap(); + +#[test] +fn old_minimal() { + let meta: Metadata = serde_json::from_str(JSON_OLD_MINIMAL).unwrap(); assert_eq!(meta.packages.len(), 1); let pkg = &meta.packages[0]; assert_eq!(pkg.name, "foo"); @@ -121,6 +124,15 @@ fn old_minimal() { assert_eq!(meta.workspace_root, "/foo"); assert_eq!(meta.workspace_metadata, serde_json::Value::Null); assert_eq!(meta.target_directory, "/foo/target"); + + assert!(workspace_default_members_is_missing( + &meta.workspace_default_members + )); + let serialized = serde_json::to_value(meta).unwrap(); + assert!(!serialized + .as_object() + .unwrap() + .contains_key("workspace_default_members")); } macro_rules! sorted { @@ -178,6 +190,7 @@ fn all_the_fields() { // path added in 1.51 // default_run added in 1.55 // rust_version added in 1.58 + // workspace_default_members added in 1.71 eprintln!("Skipping all_the_fields test, cargo {} is too old.", ver); return; } @@ -187,7 +200,7 @@ fn all_the_fields() { .unwrap(); assert_eq!(meta.workspace_root.file_name().unwrap(), "all"); assert_eq!( - serde_json::from_value::(meta.workspace_metadata).unwrap(), + serde_json::from_value::(meta.workspace_metadata.clone()).unwrap(), WorkspaceMetadata { testobject: TestObject { myvalue: "abc".to_string() @@ -196,6 +209,9 @@ fn all_the_fields() { ); assert_eq!(meta.workspace_members.len(), 1); assert!(meta.workspace_members[0].to_string().starts_with("all")); + if ver >= semver::Version::parse("1.71.0").unwrap() { + assert_eq!(&*meta.workspace_default_members, &meta.workspace_members); + } assert_eq!(meta.packages.len(), 9); let all = meta.packages.iter().find(|p| p.name == "all").unwrap(); @@ -450,6 +466,18 @@ fn all_the_fields() { kind.target.as_ref().map(|x| x.to_string()), Some("cfg(windows)".to_string()) ); + + let serialized = serde_json::to_value(meta).unwrap(); + if ver >= semver::Version::parse("1.71.0").unwrap() { + assert!(serialized.as_object().unwrap()["workspace_default_members"] + .as_array() + .is_some()); + } else { + assert!(!serialized + .as_object() + .unwrap() + .contains_key("workspace_default_members")); + } } #[test] @@ -690,3 +718,10 @@ fn debuginfo_variants() { } } } + +#[test] +#[should_panic = "WorkspaceDefaultMembers should only be dereferenced on Cargo versions >= 1.71"] +fn missing_workspace_default_members() { + let meta: Metadata = serde_json::from_str(JSON_OLD_MINIMAL).unwrap(); + let _ = &*meta.workspace_default_members; +} -- cgit v1.2.3