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