Skip to content

Commit

Permalink
Fix metadata to accept quoted key table
Browse files Browse the repository at this point in the history
  • Loading branch information
chansuke authored and jyn514 committed Sep 11, 2021
1 parent fac3ea5 commit b70039c
Showing 1 changed file with 29 additions and 2 deletions.
31 changes: 29 additions & 2 deletions crates/metadata/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -300,12 +300,19 @@ impl std::str::FromStr for Metadata {
}
}

let table = manifest
let plain_table = manifest
.clone()
.and_then(|t| table(t, "package"))
.and_then(|t| table(t, "metadata"))
.and_then(|t| table(t, "docs"))
.and_then(|t| table(t, "rs"));
let mut metadata = if let Some(table) = table {
let quoted_table = manifest
.and_then(|t| table(t, "package"))
.and_then(|t| table(t, "metadata"))
.and_then(|t| table(t, "docs.rs"));
let mut metadata = if let Some(table) = plain_table {
Value::Table(table).try_into()?
} else if let Some(table) = quoted_table {
Value::Table(table).try_into()?
} else {
Metadata::default()
Expand Down Expand Up @@ -409,6 +416,26 @@ mod test_parsing {
.unwrap();
assert!(metadata.targets.unwrap().is_empty());
}

#[test]
fn test_quoted_table() {
// parse quoted keys
let manifest = r#"
[package]
name = "test"
[package.metadata."docs.rs"]
features = [ "feature1", "feature2" ]
all-features = true
no-default-features = true
default-target = "x86_64-unknown-linux-gnu"
"#;
let metadata = Metadata::from_str(manifest).unwrap();

assert!(metadata.features.is_some());
assert!(metadata.all_features);
assert!(metadata.no_default_features);
assert!(metadata.default_target.is_some());
}
}

#[cfg(test)]
Expand Down

0 comments on commit b70039c

Please sign in to comment.