11use 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+ } ;
36use rustc_span:: edition:: { Edition , DEFAULT_EDITION } ;
47
58#[ test]
@@ -51,10 +54,25 @@ fn test_lang_string_parse() {
5154
5255 t ( Default :: default ( ) ) ;
5356 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+ } ) ;
5876 t ( LangString { original : "ignore" . into ( ) , ignore : Ignore :: All , ..Default :: default ( ) } ) ;
5977 t ( LangString {
6078 original : "ignore-foo" . into ( ) ,
@@ -70,41 +88,56 @@ fn test_lang_string_parse() {
7088 compile_fail : true ,
7189 ..Default :: default ( )
7290 } ) ;
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+ } ) ;
7497 t ( LangString {
7598 original : "sh,should_panic" . into ( ) ,
7699 should_panic : true ,
77100 rust : false ,
101+ unknown : vec ! [ "sh" . into( ) ] ,
102+ ..Default :: default ( )
103+ } ) ;
104+ t ( LangString {
105+ original : "example,rust" . into ( ) ,
106+ unknown : vec ! [ "example" . into( ) ] ,
78107 ..Default :: default ( )
79108 } ) ;
80- t ( LangString { original : "example,rust" . into ( ) , ..Default :: default ( ) } ) ;
81109 t ( LangString {
82110 original : "test_harness,.rust" . into ( ) ,
83111 test_harness : true ,
112+ unknown : vec ! [ ".rust" . into( ) ] ,
84113 ..Default :: default ( )
85114 } ) ;
86115 t ( LangString {
87116 original : "text, no_run" . into ( ) ,
88117 no_run : true ,
89118 rust : false ,
119+ unknown : vec ! [ "text" . into( ) ] ,
90120 ..Default :: default ( )
91121 } ) ;
92122 t ( LangString {
93123 original : "text,no_run" . into ( ) ,
94124 no_run : true ,
95125 rust : false ,
126+ unknown : vec ! [ "text" . into( ) ] ,
96127 ..Default :: default ( )
97128 } ) ;
98129 t ( LangString {
99130 original : "text,no_run, " . into ( ) ,
100131 no_run : true ,
101132 rust : false ,
133+ unknown : vec ! [ "text" . into( ) ] ,
102134 ..Default :: default ( )
103135 } ) ;
104136 t ( LangString {
105137 original : "text,no_run," . into ( ) ,
106138 no_run : true ,
107139 rust : false ,
140+ unknown : vec ! [ "text" . into( ) ] ,
108141 ..Default :: default ( )
109142 } ) ;
110143 t ( LangString {
@@ -118,52 +151,96 @@ fn test_lang_string_parse() {
118151 ..Default :: default ( )
119152 } ) ;
120153 t ( LangString {
121- original : "class: test" . into ( ) ,
154+ original : "{ class= test} " . into ( ) ,
122155 added_classes : vec ! [ "test" . into( ) ] ,
123156 rust : false ,
124157 ..Default :: default ( )
125158 } ) ;
126159 t ( LangString {
127- original : "rust,class: test" . into ( ) ,
160+ original : "{. test} " . into ( ) ,
128161 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( ) ] ,
129168 rust : true ,
130169 ..Default :: default ( )
131170 } ) ;
132171 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 ( ) ] ,
135174 rust : false ,
136175 ..Default :: default ( )
137176 } ) ;
138177 t ( LangString {
139- original : "class: first,class: second" . into ( ) ,
178+ original : "{ class= first,class= second} " . into ( ) ,
140179 added_classes : vec ! [ "first" . into( ) , "second" . into( ) ] ,
141180 rust : false ,
142181 ..Default :: default ( )
143182 } ) ;
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+ } ) ;
144221}
145222
146223#[ test]
147224fn 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 < _ > > ( ) ;
150227 assert_eq ! ( have, want, "Unexpected lang string split for `{}`" , lang_string) ;
151228 }
152229
153230 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" ) ] ) ;
167244}
168245
169246#[ test]
0 commit comments