From 7ee1c1b4798f18135ee618e30ccedfdf1f365451 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 7 Jan 2019 09:06:04 -0800 Subject: Fix disallowing duplicate table headers This commit fixes #279 where a case of duplicate table headers slipped through the cracks. This also adds an option to disable this new validation to allow Cargo to preserve backwards compatibility. --- test-suite/tests/backcompat.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'test-suite/tests/backcompat.rs') diff --git a/test-suite/tests/backcompat.rs b/test-suite/tests/backcompat.rs index 1b3f599..e06eefc 100644 --- a/test-suite/tests/backcompat.rs +++ b/test-suite/tests/backcompat.rs @@ -4,7 +4,7 @@ extern crate serde; use serde::de::Deserialize; #[test] -fn main() { +fn newlines_after_tables() { let s = " [a] foo = 1 [[b]] foo = 1 @@ -17,3 +17,25 @@ fn main() { assert_eq!(value["a"]["foo"].as_integer(), Some(1)); assert_eq!(value["b"][0]["foo"].as_integer(), Some(1)); } + +#[test] +fn allow_duplicate_after_longer() { + let s = " + [dependencies.openssl-sys] + version = 1 + + [dependencies] + libc = 1 + + [dependencies] + bitflags = 1 + "; + assert!(s.parse::().is_err()); + + let mut d = toml::de::Deserializer::new(s); + d.set_allow_duplicate_after_longer_table(true); + let value = toml::Value::deserialize(&mut d).unwrap(); + assert_eq!(value["dependencies"]["openssl-sys"]["version"].as_integer(), Some(1)); + assert_eq!(value["dependencies"]["libc"].as_integer(), Some(1)); + assert_eq!(value["dependencies"]["bitflags"].as_integer(), Some(1)); +} -- cgit v1.2.3