1
1
use annotate_snippets:: { Level , Renderer , Snippet } ;
2
2
3
+ use snapbox:: { assert_eq, str} ;
4
+
3
5
#[ test]
4
6
fn test_i_29 ( ) {
5
7
let snippets = Level :: Error . title ( "oops" ) . snippet (
@@ -8,16 +10,18 @@ fn test_i_29() {
8
10
. annotation ( Level :: Error . span ( 19 ..23 ) . label ( "oops" ) )
9
11
. fold ( true ) ,
10
12
) ;
11
- let expected = r#"error: oops
13
+ let expected = str![ [ r#"
14
+ error: oops
12
15
--> <current file>:2:8
13
16
|
14
17
1 | First line
15
18
2 | Second oops line
16
19
| ^^^^ oops
17
- |"# ;
20
+ |"# ] ]
21
+ . indent ( false ) ;
18
22
19
23
let renderer = Renderer :: plain ( ) ;
20
- assert_eq ! ( renderer. render( snippets) . to_string( ) , expected ) ;
24
+ assert_eq ( expected , renderer. render ( snippets) . to_string ( ) ) ;
21
25
}
22
26
23
27
#[ test]
@@ -28,15 +32,17 @@ fn test_point_to_double_width_characters() {
28
32
. annotation ( Level :: Error . span ( 18 ..24 ) . label ( "world" ) ) ,
29
33
) ;
30
34
31
- let expected = r#"error
35
+ let expected = str![ [ r#"
36
+ error
32
37
--> <current file>:1:7
33
38
|
34
39
1 | こんにちは、世界
35
40
| ^^^^ world
36
- |"# ;
41
+ |"# ] ]
42
+ . indent ( false ) ;
37
43
38
44
let renderer = Renderer :: plain ( ) ;
39
- assert_eq ! ( renderer. render( snippets) . to_string( ) , expected ) ;
45
+ assert_eq ( expected , renderer. render ( snippets) . to_string ( ) ) ;
40
46
}
41
47
42
48
#[ test]
@@ -47,17 +53,19 @@ fn test_point_to_double_width_characters_across_lines() {
47
53
. annotation ( Level :: Error . span ( 6 ..22 ) . label ( "Good morning" ) ) ,
48
54
) ;
49
55
50
- let expected = r#"error
56
+ let expected = str![ [ r#"
57
+ error
51
58
--> <current file>:1:3
52
59
|
53
60
1 | おはよう
54
61
| _____^
55
62
2 | | ございます
56
63
| |______^ Good morning
57
- |"# ;
64
+ |"# ] ]
65
+ . indent ( false ) ;
58
66
59
67
let renderer = Renderer :: plain ( ) ;
60
- assert_eq ! ( renderer. render( snippets) . to_string( ) , expected ) ;
68
+ assert_eq ( expected , renderer. render ( snippets) . to_string ( ) ) ;
61
69
}
62
70
63
71
#[ test]
@@ -69,17 +77,19 @@ fn test_point_to_double_width_characters_multiple() {
69
77
. annotation ( Level :: Note . span ( 16 ..22 ) . label ( "Sushi2" ) ) ,
70
78
) ;
71
79
72
- let expected = r#"error
80
+ let expected = str![ [ r#"
81
+ error
73
82
--> <current file>:1:1
74
83
|
75
84
1 | お寿司
76
85
| ^^^^^^ Sushi1
77
86
2 | 食べたい🍣
78
87
| ---- note: Sushi2
79
- |"# ;
88
+ |"# ] ]
89
+ . indent ( false ) ;
80
90
81
91
let renderer = Renderer :: plain ( ) ;
82
- assert_eq ! ( renderer. render( snippets) . to_string( ) , expected ) ;
92
+ assert_eq ( expected , renderer. render ( snippets) . to_string ( ) ) ;
83
93
}
84
94
85
95
#[ test]
@@ -90,24 +100,26 @@ fn test_point_to_double_width_characters_mixed() {
90
100
. annotation ( Level :: Error . span ( 18 ..32 ) . label ( "New world" ) ) ,
91
101
) ;
92
102
93
- let expected = r#"error
103
+ let expected = str![ [ r#"
104
+ error
94
105
--> <current file>:1:7
95
106
|
96
107
1 | こんにちは、新しいWorld!
97
108
| ^^^^^^^^^^^ New world
98
- |"# ;
109
+ |"# ] ]
110
+ . indent ( false ) ;
99
111
100
112
let renderer = Renderer :: plain ( ) ;
101
- assert_eq ! ( renderer. render( snippets) . to_string( ) , expected ) ;
113
+ assert_eq ( expected , renderer. render ( snippets) . to_string ( ) ) ;
102
114
}
103
115
104
116
#[ test]
105
117
fn test_format_title ( ) {
106
118
let input = Level :: Error . title ( "This is a title" ) . id ( "E0001" ) ;
107
119
108
- let expected = r#"error[E0001]: This is a title"# ;
120
+ let expected = str! [ r#"error[E0001]: This is a title"# ] ;
109
121
let renderer = Renderer :: plain ( ) ;
110
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
122
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
111
123
}
112
124
113
125
#[ test]
@@ -117,13 +129,15 @@ fn test_format_snippet_only() {
117
129
. title ( "" )
118
130
. snippet ( Snippet :: source ( source) . line_start ( 5402 ) ) ;
119
131
120
- let expected = r#"error
132
+ let expected = str![ [ r#"
133
+ error
121
134
|
122
135
5402 | This is line 1
123
136
5403 | This is line 2
124
- |"# ;
137
+ |"# ] ]
138
+ . indent ( false ) ;
125
139
let renderer = Renderer :: plain ( ) ;
126
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
140
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
127
141
}
128
142
129
143
#[ test]
@@ -134,17 +148,19 @@ fn test_format_snippets_continuation() {
134
148
. title ( "" )
135
149
. snippet ( Snippet :: source ( src_0) . line_start ( 5402 ) . origin ( "file1.rs" ) )
136
150
. snippet ( Snippet :: source ( src_1) . line_start ( 2 ) . origin ( "file2.rs" ) ) ;
137
- let expected = r#"error
151
+ let expected = str![ [ r#"
152
+ error
138
153
--> file1.rs
139
154
|
140
155
5402 | This is slice 1
141
156
|
142
157
::: file2.rs
143
158
|
144
159
2 | This is slice 2
145
- |"# ;
160
+ |"# ] ]
161
+ . indent ( false ) ;
146
162
let renderer = Renderer :: plain ( ) ;
147
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
163
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
148
164
}
149
165
150
166
#[ test]
@@ -159,25 +175,29 @@ fn test_format_snippet_annotation_standalone() {
159
175
. line_start ( 5402 )
160
176
. annotation ( Level :: Info . span ( range. clone ( ) ) . label ( "Test annotation" ) ) ,
161
177
) ;
162
- let expected = r#"error
178
+ let expected = str![ [ r#"
179
+ error
163
180
|
164
181
5402 | This is line 1
165
182
5403 | This is line 2
166
183
| -- info: Test annotation
167
- |"# ;
184
+ |"# ] ]
185
+ . indent ( false ) ;
168
186
let renderer = Renderer :: plain ( ) ;
169
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
187
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
170
188
}
171
189
172
190
#[ test]
173
191
fn test_format_footer_title ( ) {
174
192
let input = Level :: Error
175
193
. title ( "" )
176
194
. footer ( Level :: Error . title ( "This __is__ a title" ) ) ;
177
- let expected = r#"error
178
- = error: This __is__ a title"# ;
195
+ let expected = str![ [ r#"
196
+ error
197
+ = error: This __is__ a title"# ] ]
198
+ . indent ( false ) ;
179
199
let renderer = Renderer :: plain ( ) ;
180
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
200
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
181
201
}
182
202
183
203
#[ test]
@@ -200,13 +220,15 @@ fn test_source_content() {
200
220
let input = Level :: Error
201
221
. title ( "" )
202
222
. snippet ( Snippet :: source ( source) . line_start ( 56 ) ) ;
203
- let expected = r#"error
223
+ let expected = str![ [ r#"
224
+ error
204
225
|
205
226
56 | This is an example
206
227
57 | of content lines
207
- |"# ;
228
+ |"# ] ]
229
+ . indent ( false ) ;
208
230
let renderer = Renderer :: plain ( ) ;
209
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
231
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
210
232
}
211
233
212
234
#[ test]
@@ -217,13 +239,15 @@ fn test_source_annotation_standalone_singleline() {
217
239
. line_start ( 1 )
218
240
. annotation ( Level :: Help . span ( 0 ..5 ) . label ( "Example string" ) ) ,
219
241
) ;
220
- let expected = r#"error
242
+ let expected = str![ [ r#"
243
+ error
221
244
|
222
245
1 | tests
223
246
| ----- help: Example string
224
- |"# ;
247
+ |"# ] ]
248
+ . indent ( false ) ;
225
249
let renderer = Renderer :: plain ( ) ;
226
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
250
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
227
251
}
228
252
229
253
#[ test]
@@ -235,27 +259,31 @@ fn test_source_annotation_standalone_multiline() {
235
259
. annotation ( Level :: Help . span ( 0 ..5 ) . label ( "Example string" ) )
236
260
. annotation ( Level :: Help . span ( 0 ..5 ) . label ( "Second line" ) ) ,
237
261
) ;
238
- let expected = r#"error
262
+ let expected = str![ [ r#"
263
+ error
239
264
|
240
265
1 | tests
241
266
| ----- help: Example string
242
267
| ----- help: Second line
243
- |"# ;
268
+ |"# ] ]
269
+ . indent ( false ) ;
244
270
let renderer = Renderer :: plain ( ) ;
245
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
271
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
246
272
}
247
273
248
274
#[ test]
249
275
fn test_only_source ( ) {
250
276
let input = Level :: Error
251
277
. title ( "" )
252
278
. snippet ( Snippet :: source ( "" ) . origin ( "file.rs" ) ) ;
253
- let expected = r#"error
279
+ let expected = str![ [ r#"
280
+ error
254
281
--> file.rs
255
282
|
256
- |"# ;
283
+ |"# ] ]
284
+ . indent ( false ) ;
257
285
let renderer = Renderer :: plain ( ) ;
258
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
286
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
259
287
}
260
288
261
289
#[ test]
@@ -264,13 +292,15 @@ fn test_anon_lines() {
264
292
let input = Level :: Error
265
293
. title ( "" )
266
294
. snippet ( Snippet :: source ( source) . line_start ( 56 ) ) ;
267
- let expected = r#"error
295
+ let expected = str![ [ r#"
296
+ error
268
297
|
269
298
LL | This is an example
270
299
LL | of content lines
271
300
LL |
272
301
LL | abc
273
- |"# ;
302
+ |"# ] ]
303
+ . indent ( false ) ;
274
304
let renderer = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ;
275
- assert_eq ! ( renderer. render( input) . to_string( ) , expected ) ;
305
+ assert_eq ( expected , renderer. render ( input) . to_string ( ) ) ;
276
306
}
0 commit comments