1
1
use super :: { find_testable_code, plain_text_summary, short_markdown_summary} ;
2
- use super :: { ErrorCodes , HeadingOffset , IdMap , Ignore , LangString , Markdown , MarkdownItemInfo } ;
2
+ use super :: {
3
+ ErrorCodes , HeadingOffset , IdMap , Ignore , LangString , Markdown , MarkdownItemInfo , TagIterator ,
4
+ TokenKind ,
5
+ } ;
3
6
use rustc_span:: edition:: { Edition , DEFAULT_EDITION } ;
4
7
5
8
#[ test]
@@ -51,10 +54,25 @@ fn test_lang_string_parse() {
51
54
52
55
t ( Default :: default ( ) ) ;
53
56
t ( LangString { original : "rust" . into ( ) , ..Default :: default ( ) } ) ;
54
- t ( LangString { original : ".rust" . into ( ) , ..Default :: default ( ) } ) ;
55
- t ( LangString { original : "{rust}" . into ( ) , ..Default :: default ( ) } ) ;
56
- t ( LangString { original : "{.rust}" . into ( ) , ..Default :: default ( ) } ) ;
57
- t ( LangString { original : "sh" . into ( ) , rust : false , ..Default :: default ( ) } ) ;
57
+ t ( LangString {
58
+ original : ".rust" . into ( ) ,
59
+ rust : false ,
60
+ unknown : vec ! [ ".rust" . into( ) ] ,
61
+ ..Default :: default ( )
62
+ } ) ;
63
+ t ( LangString { original : "{rust}" . into ( ) , rust : false , ..Default :: default ( ) } ) ;
64
+ t ( LangString {
65
+ original : "{.rust}" . into ( ) ,
66
+ rust : false ,
67
+ added_classes : vec ! [ "rust" . into( ) ] ,
68
+ ..Default :: default ( )
69
+ } ) ;
70
+ t ( LangString {
71
+ original : "sh" . into ( ) ,
72
+ rust : false ,
73
+ unknown : vec ! [ "sh" . into( ) ] ,
74
+ ..Default :: default ( )
75
+ } ) ;
58
76
t ( LangString { original : "ignore" . into ( ) , ignore : Ignore :: All , ..Default :: default ( ) } ) ;
59
77
t ( LangString {
60
78
original : "ignore-foo" . into ( ) ,
@@ -70,41 +88,56 @@ fn test_lang_string_parse() {
70
88
compile_fail : true ,
71
89
..Default :: default ( )
72
90
} ) ;
73
- t ( LangString { original : "no_run,example" . into ( ) , no_run : true , ..Default :: default ( ) } ) ;
91
+ t ( LangString {
92
+ original : "no_run,example" . into ( ) ,
93
+ no_run : true ,
94
+ unknown : vec ! [ "example" . into( ) ] ,
95
+ ..Default :: default ( )
96
+ } ) ;
74
97
t ( LangString {
75
98
original : "sh,should_panic" . into ( ) ,
76
99
should_panic : true ,
77
100
rust : false ,
101
+ unknown : vec ! [ "sh" . into( ) ] ,
102
+ ..Default :: default ( )
103
+ } ) ;
104
+ t ( LangString {
105
+ original : "example,rust" . into ( ) ,
106
+ unknown : vec ! [ "example" . into( ) ] ,
78
107
..Default :: default ( )
79
108
} ) ;
80
- t ( LangString { original : "example,rust" . into ( ) , ..Default :: default ( ) } ) ;
81
109
t ( LangString {
82
110
original : "test_harness,.rust" . into ( ) ,
83
111
test_harness : true ,
112
+ unknown : vec ! [ ".rust" . into( ) ] ,
84
113
..Default :: default ( )
85
114
} ) ;
86
115
t ( LangString {
87
116
original : "text, no_run" . into ( ) ,
88
117
no_run : true ,
89
118
rust : false ,
119
+ unknown : vec ! [ "text" . into( ) ] ,
90
120
..Default :: default ( )
91
121
} ) ;
92
122
t ( LangString {
93
123
original : "text,no_run" . into ( ) ,
94
124
no_run : true ,
95
125
rust : false ,
126
+ unknown : vec ! [ "text" . into( ) ] ,
96
127
..Default :: default ( )
97
128
} ) ;
98
129
t ( LangString {
99
130
original : "text,no_run, " . into ( ) ,
100
131
no_run : true ,
101
132
rust : false ,
133
+ unknown : vec ! [ "text" . into( ) ] ,
102
134
..Default :: default ( )
103
135
} ) ;
104
136
t ( LangString {
105
137
original : "text,no_run," . into ( ) ,
106
138
no_run : true ,
107
139
rust : false ,
140
+ unknown : vec ! [ "text" . into( ) ] ,
108
141
..Default :: default ( )
109
142
} ) ;
110
143
t ( LangString {
@@ -118,52 +151,96 @@ fn test_lang_string_parse() {
118
151
..Default :: default ( )
119
152
} ) ;
120
153
t ( LangString {
121
- original : "class: test" . into ( ) ,
154
+ original : "{ class= test} " . into ( ) ,
122
155
added_classes : vec ! [ "test" . into( ) ] ,
123
156
rust : false ,
124
157
..Default :: default ( )
125
158
} ) ;
126
159
t ( LangString {
127
- original : "rust,class: test" . into ( ) ,
160
+ original : "{. test} " . into ( ) ,
128
161
added_classes : vec ! [ "test" . into( ) ] ,
162
+ rust : false ,
163
+ ..Default :: default ( )
164
+ } ) ;
165
+ t ( LangString {
166
+ original : "rust,{class=test,.test2}" . into ( ) ,
167
+ added_classes : vec ! [ "test" . into( ) , "test2" . into( ) ] ,
129
168
rust : true ,
130
169
..Default :: default ( )
131
170
} ) ;
132
171
t ( LangString {
133
- original : "class: test:with:colon" . into ( ) ,
134
- added_classes : vec ! [ "test:with:colon" . into( ) ] ,
172
+ original : "{ class= test:with:colon .test1} " . into ( ) ,
173
+ added_classes : vec ! [ "test:with:colon" . into( ) , "test1" . into ( ) ] ,
135
174
rust : false ,
136
175
..Default :: default ( )
137
176
} ) ;
138
177
t ( LangString {
139
- original : "class: first,class: second" . into ( ) ,
178
+ original : "{ class= first,class= second} " . into ( ) ,
140
179
added_classes : vec ! [ "first" . into( ) , "second" . into( ) ] ,
141
180
rust : false ,
142
181
..Default :: default ( )
143
182
} ) ;
183
+ t ( LangString {
184
+ original : "{class=first,.second},unknown" . into ( ) ,
185
+ added_classes : vec ! [ "first" . into( ) , "second" . into( ) ] ,
186
+ rust : false ,
187
+ unknown : vec ! [ "unknown" . into( ) ] ,
188
+ ..Default :: default ( )
189
+ } ) ;
190
+ t ( LangString {
191
+ original : "{class=first .second} unknown" . into ( ) ,
192
+ added_classes : vec ! [ "first" . into( ) , "second" . into( ) ] ,
193
+ rust : false ,
194
+ unknown : vec ! [ "unknown" . into( ) ] ,
195
+ ..Default :: default ( )
196
+ } ) ;
197
+ t ( LangString {
198
+ original : "{.first.second}" . into ( ) ,
199
+ added_classes : vec ! [ "first.second" . into( ) ] ,
200
+ rust : false ,
201
+ ..Default :: default ( )
202
+ } ) ;
203
+ t ( LangString {
204
+ original : "{class=first=second}" . into ( ) ,
205
+ added_classes : vec ! [ "first=second" . into( ) ] ,
206
+ rust : false ,
207
+ ..Default :: default ( )
208
+ } ) ;
209
+ t ( LangString {
210
+ original : "{class=first.second}" . into ( ) ,
211
+ added_classes : vec ! [ "first.second" . into( ) ] ,
212
+ rust : false ,
213
+ ..Default :: default ( )
214
+ } ) ;
215
+ t ( LangString {
216
+ original : "{class=.first}" . into ( ) ,
217
+ added_classes : vec ! [ ".first" . into( ) ] ,
218
+ rust : false ,
219
+ ..Default :: default ( )
220
+ } ) ;
144
221
}
145
222
146
223
#[ test]
147
224
fn test_lang_string_tokenizer ( ) {
148
- fn case ( lang_string : & str , want : & [ & str ] ) {
149
- let have = LangString :: tokens ( lang_string) . collect :: < Vec < & str > > ( ) ;
225
+ fn case ( lang_string : & str , want : & [ TokenKind < ' _ > ] ) {
226
+ let have = TagIterator :: new ( lang_string, None ) . collect :: < Vec < _ > > ( ) ;
150
227
assert_eq ! ( have, want, "Unexpected lang string split for `{}`" , lang_string) ;
151
228
}
152
229
153
230
case ( "" , & [ ] ) ;
154
- case ( "foo" , & [ "foo" ] ) ;
155
- case ( "foo,bar" , & [ "foo" , "bar" ] ) ;
156
- case ( ".foo,.bar" , & [ " foo", " bar"] ) ;
157
- case ( "{.foo,.bar}" , & [ " foo", " bar"] ) ;
158
- case ( " {.foo,.bar} " , & [ " foo", " bar"] ) ;
159
- case ( "foo bar" , & [ "foo" , "bar" ] ) ;
160
- case ( "foo\t bar" , & [ "foo" , "bar" ] ) ;
161
- case ( "foo\t , bar" , & [ "foo" , "bar" ] ) ;
162
- case ( " foo , bar " , & [ "foo" , "bar" ] ) ;
163
- case ( ",,foo,,bar,," , & [ "foo" , "bar" ] ) ;
164
- case ( "foo=bar" , & [ "foo=bar" ] ) ;
165
- case ( "a-b-c" , & [ "a-b-c" ] ) ;
166
- case ( "a_b_c" , & [ "a_b_c" ] ) ;
231
+ case ( "foo" , & [ TokenKind :: Token ( "foo" ) ] ) ;
232
+ case ( "foo,bar" , & [ TokenKind :: Token ( "foo" ) , TokenKind :: Token ( "bar" ) ] ) ;
233
+ case ( ".foo,.bar" , & [ TokenKind :: Token ( ". foo") , TokenKind :: Token ( ". bar") ] ) ;
234
+ case ( "{.foo,.bar}" , & [ TokenKind :: Attribute ( ". foo") , TokenKind :: Attribute ( ". bar") ] ) ;
235
+ case ( " {.foo,.bar} " , & [ TokenKind :: Attribute ( ". foo") , TokenKind :: Attribute ( ". bar") ] ) ;
236
+ case ( "foo bar" , & [ TokenKind :: Token ( "foo" ) , TokenKind :: Token ( "bar" ) ] ) ;
237
+ case ( "foo\t bar" , & [ TokenKind :: Token ( "foo" ) , TokenKind :: Token ( "bar" ) ] ) ;
238
+ case ( "foo\t , bar" , & [ TokenKind :: Token ( "foo" ) , TokenKind :: Token ( "bar" ) ] ) ;
239
+ case ( " foo , bar " , & [ TokenKind :: Token ( "foo" ) , TokenKind :: Token ( "bar" ) ] ) ;
240
+ case ( ",,foo,,bar,," , & [ TokenKind :: Token ( "foo" ) , TokenKind :: Token ( "bar" ) ] ) ;
241
+ case ( "foo=bar" , & [ TokenKind :: Token ( "foo=bar" ) ] ) ;
242
+ case ( "a-b-c" , & [ TokenKind :: Token ( "a-b-c" ) ] ) ;
243
+ case ( "a_b_c" , & [ TokenKind :: Token ( "a_b_c" ) ] ) ;
167
244
}
168
245
169
246
#[ test]
0 commit comments