6de25e7cc8
Quoting 68076ffc6d (user-content-keys)
> A bare key must be non-empty, but an empty quoted key is allowed (though discouraged).
See also the discussion in https://github.com/toml-lang/toml/issues/432
52 lines
1.3 KiB
Rust
52 lines
1.3 KiB
Rust
extern crate toml;
|
|
|
|
macro_rules! bad {
|
|
($toml:expr, $msg:expr) => {
|
|
match $toml.parse::<toml::Value>() {
|
|
Ok(s) => panic!("parsed to: {:#?}", s),
|
|
Err(e) => assert_eq!(e.to_string(), $msg),
|
|
}
|
|
};
|
|
}
|
|
|
|
#[test]
|
|
fn bad() {
|
|
bad!("a = 01", "invalid number at line 1 column 6");
|
|
bad!("a = 1__1", "invalid number at line 1 column 5");
|
|
bad!("a = 1_", "invalid number at line 1 column 5");
|
|
bad!("''", "expected an equals, found eof at line 1 column 3");
|
|
bad!("a = 9e99999", "invalid number at line 1 column 5");
|
|
|
|
bad!(
|
|
"a = \"\u{7f}\"",
|
|
"invalid character in string: `\\u{7f}` at line 1 column 6"
|
|
);
|
|
bad!(
|
|
"a = '\u{7f}'",
|
|
"invalid character in string: `\\u{7f}` at line 1 column 6"
|
|
);
|
|
|
|
bad!("a = -0x1", "invalid number at line 1 column 5");
|
|
bad!(
|
|
"a = 0x-1",
|
|
"failed to parse datetime for key `a` at line 1 column 5"
|
|
);
|
|
|
|
// Dotted keys.
|
|
bad!(
|
|
"a.b.c = 1
|
|
a.b = 2
|
|
",
|
|
"duplicate key: `b` for key `a` at line 1 column 9"
|
|
);
|
|
bad!(
|
|
"a = 1
|
|
a.b = 2",
|
|
"dotted key attempted to extend non-table type at line 1 column 5"
|
|
);
|
|
bad!(
|
|
"a = {k1 = 1, k1.name = \"joe\"}",
|
|
"dotted key attempted to extend non-table type at line 1 column 11"
|
|
);
|
|
}
|