1 #[test]
incomplete_inline_table_issue_296()2 fn incomplete_inline_table_issue_296() {
3     let err = "native = {".parse::<toml_edit::Document>().unwrap_err();
4     snapbox::assert_eq(
5         r#"TOML parse error at line 1, column 11
6   |
7 1 | native = {
8   |           ^
9 invalid inline table
10 expected `}`
11 "#,
12         err.to_string(),
13     );
14 }
15 
16 #[test]
bare_value_disallowed_issue_293()17 fn bare_value_disallowed_issue_293() {
18     let err = "value=zzz".parse::<toml_edit::Document>().unwrap_err();
19     snapbox::assert_eq(
20         r#"TOML parse error at line 1, column 7
21   |
22 1 | value=zzz
23   |       ^
24 invalid string
25 expected `"`, `'`
26 "#,
27         err.to_string(),
28     );
29 }
30 
31 #[test]
bare_value_in_array_disallowed_issue_293()32 fn bare_value_in_array_disallowed_issue_293() {
33     let err = "value=[zzz]".parse::<toml_edit::Document>().unwrap_err();
34     snapbox::assert_eq(
35         r#"TOML parse error at line 1, column 8
36   |
37 1 | value=[zzz]
38   |        ^
39 invalid array
40 expected `]`
41 "#,
42         err.to_string(),
43     );
44 }
45 
46 #[test]
duplicate_table_after_dotted_key_issue_509()47 fn duplicate_table_after_dotted_key_issue_509() {
48     let err = "
49 [dependencies.foo]
50 version = \"0.16\"
51 
52 [dependencies]
53 libc = \"0.2\"
54 
55 [dependencies]
56 rand = \"0.3.14\"
57 "
58     .parse::<toml_edit::Document>()
59     .unwrap_err();
60     snapbox::assert_eq(
61         r#"TOML parse error at line 8, column 1
62   |
63 8 | [dependencies]
64   | ^
65 invalid table header
66 duplicate key `dependencies` in document root
67 "#,
68         err.to_string(),
69     );
70 }
71 
72 #[test]
bad()73 fn bad() {
74     let toml_input = "a = 01";
75     let expected_err = "\
76 TOML parse error at line 1, column 6
77   |
78 1 | a = 01
79   |      ^
80 expected newline, `#`
81 ";
82     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
83     snapbox::assert_eq(expected_err, err.to_string());
84 
85     let toml_input = "a = 1__1";
86     let expected_err = "\
87 TOML parse error at line 1, column 7
88   |
89 1 | a = 1__1
90   |       ^
91 invalid integer
92 expected digit
93 ";
94     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
95     snapbox::assert_eq(expected_err, err.to_string());
96 
97     let toml_input = "a = 1_";
98     let expected_err = "\
99 TOML parse error at line 1, column 7
100   |
101 1 | a = 1_
102   |       ^
103 invalid integer
104 expected digit
105 ";
106     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
107     snapbox::assert_eq(expected_err, err.to_string());
108 
109     let toml_input = "''";
110     let expected_err = "\
111 TOML parse error at line 1, column 3
112   |
113 1 | ''
114   |   ^
115 expected `.`, `=`
116 ";
117     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
118     snapbox::assert_eq(expected_err, err.to_string());
119 
120     let toml_input = "a = 9e99999";
121     let expected_err = "\
122 TOML parse error at line 1, column 5
123   |
124 1 | a = 9e99999
125   |     ^
126 invalid floating-point number
127 ";
128     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
129     snapbox::assert_eq(expected_err, err.to_string());
130 
131     let toml_input = "a = \"\u{7f}\"";
132     let expected_err = "\
133 TOML parse error at line 1, column 6
134   |
135 1 | a = \"\u{7f}\"
136   |      ^
137 invalid basic string
138 ";
139     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
140     snapbox::assert_eq(expected_err, err.to_string());
141 
142     let toml_input = "a = '\u{7f}'";
143     let expected_err = "\
144 TOML parse error at line 1, column 6
145   |
146 1 | a = '\u{7f}'
147   |      ^
148 invalid literal string
149 ";
150     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
151     snapbox::assert_eq(expected_err, err.to_string());
152 
153     let toml_input = "a = -0x1";
154     let expected_err = "\
155 TOML parse error at line 1, column 7
156   |
157 1 | a = -0x1
158   |       ^
159 expected newline, `#`
160 ";
161     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
162     snapbox::assert_eq(expected_err, err.to_string());
163 
164     let toml_input = "a = 0x-1";
165     let expected_err = "\
166 TOML parse error at line 1, column 7
167   |
168 1 | a = 0x-1
169   |       ^
170 invalid hexadecimal integer
171 ";
172     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
173     snapbox::assert_eq(expected_err, err.to_string());
174 
175     // Dotted keys.
176     let toml_input = "a.b.c = 1
177          a.b = 2
178         ";
179     let expected_err = "\
180 TOML parse error at line 2, column 10
181   |
182 2 |          a.b = 2
183   |          ^
184 duplicate key `b` in document root
185 ";
186     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
187     snapbox::assert_eq(expected_err, err.to_string());
188 
189     let toml_input = "a = 1
190          a.b = 2";
191     let expected_err = "\
192 TOML parse error at line 2, column 10
193   |
194 2 |          a.b = 2
195   |          ^
196 dotted key `a` attempted to extend non-table type (integer)
197 ";
198     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
199     snapbox::assert_eq(expected_err, err.to_string());
200 
201     let toml_input = "a = {k1 = 1, k1.name = \"joe\"}";
202     let expected_err = "\
203 TOML parse error at line 1, column 6
204   |
205 1 | a = {k1 = 1, k1.name = \"joe\"}
206   |      ^
207 dotted key `k1` attempted to extend non-table type (integer)
208 ";
209     let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
210     snapbox::assert_eq(expected_err, err.to_string());
211 }
212