211 lines
4.8 KiB
Rust
211 lines
4.8 KiB
Rust
#[test]
|
|
fn incomplete_inline_table_issue_296() {
|
|
let err = "native = {".parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(
|
|
r#"TOML parse error at line 1, column 11
|
|
|
|
|
1 | native = {
|
|
| ^
|
|
invalid inline table
|
|
expected `}`
|
|
"#,
|
|
err.to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bare_value_disallowed_issue_293() {
|
|
let err = "value=zzz".parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(
|
|
r#"TOML parse error at line 1, column 7
|
|
|
|
|
1 | value=zzz
|
|
| ^
|
|
invalid string
|
|
expected `"`, `'`
|
|
"#,
|
|
err.to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bare_value_in_array_disallowed_issue_293() {
|
|
let err = "value=[zzz]".parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(
|
|
r#"TOML parse error at line 1, column 8
|
|
|
|
|
1 | value=[zzz]
|
|
| ^
|
|
invalid array
|
|
expected `]`
|
|
"#,
|
|
err.to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn duplicate_table_after_dotted_key_issue_509() {
|
|
let err = "
|
|
[dependencies.foo]
|
|
version = \"0.16\"
|
|
|
|
[dependencies]
|
|
libc = \"0.2\"
|
|
|
|
[dependencies]
|
|
rand = \"0.3.14\"
|
|
"
|
|
.parse::<toml_edit::Document>()
|
|
.unwrap_err();
|
|
snapbox::assert_eq(
|
|
r#"TOML parse error at line 8, column 1
|
|
|
|
|
8 | [dependencies]
|
|
| ^
|
|
invalid table header
|
|
duplicate key `dependencies` in document root
|
|
"#,
|
|
err.to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bad() {
|
|
let toml_input = "a = 01";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 6
|
|
|
|
|
1 | a = 01
|
|
| ^
|
|
expected newline, `#`
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = 1__1";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 7
|
|
|
|
|
1 | a = 1__1
|
|
| ^
|
|
invalid integer
|
|
expected digit
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = 1_";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 7
|
|
|
|
|
1 | a = 1_
|
|
| ^
|
|
invalid integer
|
|
expected digit
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "''";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 3
|
|
|
|
|
1 | ''
|
|
| ^
|
|
expected `.`, `=`
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = 9e99999";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 5
|
|
|
|
|
1 | a = 9e99999
|
|
| ^
|
|
invalid floating-point number
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = \"\u{7f}\"";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 6
|
|
|
|
|
1 | a = \"\u{7f}\"
|
|
| ^
|
|
invalid basic string
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = '\u{7f}'";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 6
|
|
|
|
|
1 | a = '\u{7f}'
|
|
| ^
|
|
invalid literal string
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = -0x1";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 7
|
|
|
|
|
1 | a = -0x1
|
|
| ^
|
|
expected newline, `#`
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = 0x-1";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 7
|
|
|
|
|
1 | a = 0x-1
|
|
| ^
|
|
invalid hexadecimal integer
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
// Dotted keys.
|
|
let toml_input = "a.b.c = 1
|
|
a.b = 2
|
|
";
|
|
let expected_err = "\
|
|
TOML parse error at line 2, column 10
|
|
|
|
|
2 | a.b = 2
|
|
| ^
|
|
duplicate key `b` in document root
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = 1
|
|
a.b = 2";
|
|
let expected_err = "\
|
|
TOML parse error at line 2, column 10
|
|
|
|
|
2 | a.b = 2
|
|
| ^
|
|
dotted key `a` attempted to extend non-table type (integer)
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
|
|
let toml_input = "a = {k1 = 1, k1.name = \"joe\"}";
|
|
let expected_err = "\
|
|
TOML parse error at line 1, column 6
|
|
|
|
|
1 | a = {k1 = 1, k1.name = \"joe\"}
|
|
| ^
|
|
dotted key `k1` attempted to extend non-table type (integer)
|
|
";
|
|
let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
|
|
snapbox::assert_eq(expected_err, err.to_string());
|
|
}
|