diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2019-01-07 09:06:04 -0800 | 
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2019-01-07 09:06:04 -0800 | 
| commit | 7ee1c1b4798f18135ee618e30ccedfdf1f365451 (patch) | |
| tree | e68d6abaaa3a5e142980b728672915ae8df7a600 /test-suite | |
| parent | ad5ea1d904d5196fa63b77e826f82c377b604602 (diff) | |
| download | milf-rs-7ee1c1b4798f18135ee618e30ccedfdf1f365451.tar.gz milf-rs-7ee1c1b4798f18135ee618e30ccedfdf1f365451.zip | |
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.
Diffstat (limited to 'test-suite')
| -rw-r--r-- | test-suite/tests/backcompat.rs | 24 | ||||
| -rw-r--r-- | test-suite/tests/invalid.rs | 2 | ||||
| -rw-r--r-- | test-suite/tests/invalid/duplicate-table.toml | 8 | 
3 files changed, 33 insertions, 1 deletions
| 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::<toml::Value>().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)); +} diff --git a/test-suite/tests/invalid.rs b/test-suite/tests/invalid.rs index 4679684..9f36e2c 100644 --- a/test-suite/tests/invalid.rs +++ b/test-suite/tests/invalid.rs @@ -96,3 +96,5 @@ test!(text_before_array_separator,        include_str!("invalid/text-before-array-separator.toml"));  test!(text_in_array,        include_str!("invalid/text-in-array.toml")); +test!(duplicate_table, +      include_str!("invalid/duplicate-table.toml")); diff --git a/test-suite/tests/invalid/duplicate-table.toml b/test-suite/tests/invalid/duplicate-table.toml new file mode 100644 index 0000000..5bd2571 --- /dev/null +++ b/test-suite/tests/invalid/duplicate-table.toml @@ -0,0 +1,8 @@ +[dependencies.openssl-sys] +version = "0.5.2" + +[dependencies] +libc = "0.1" + +[dependencies] +bitflags = "0.1.1" |