11import type { AnnotationTag } from 'annotation-comments'
22import { describe , expect , test } from 'vitest'
33import { parseAnnotationTags } from '../src/internal/tag-parser'
4+ import { parseAsGlobalRegExp } from '../src/internal/regexps'
45
56describe ( 'parseAnnotationTags' , ( ) => {
67 test ( 'Returns an empty array when no annotation tags are found' , ( ) => {
@@ -150,6 +151,15 @@ console.log('Some code');
150151 relativeTargetRange : undefined ,
151152 } )
152153 } )
154+
155+ test ( `[!tag:"C:\\Users\\Test Path"]` , ( { task } ) => {
156+ performTagTest ( {
157+ rawTag : task . name ,
158+ name : 'tag' ,
159+ targetSearchQuery : `C:\\Users\\Test Path` ,
160+ relativeTargetRange : undefined ,
161+ } )
162+ } )
153163 } )
154164
155165 describe ( 'Tags with quoted target search query and target range' , ( ) => {
@@ -171,6 +181,64 @@ console.log('Some code');
171181 } )
172182 } )
173183 } )
184+
185+ describe ( 'Tags with RegExp target search query' , ( ) => {
186+ test ( `[!tag:/reg(exp)|regular (expression)/]` , ( { task } ) => {
187+ performTagTest ( {
188+ rawTag : task . name ,
189+ name : 'tag' ,
190+ targetSearchQuery : parseAsGlobalRegExp ( / r e g ( e x p ) | r e g u l a r ( e x p r e s s i o n ) / ) ,
191+ relativeTargetRange : undefined ,
192+ } )
193+ } )
194+
195+ test ( `[!tag:/with escaped \\\\ backslash and \\/ slash/]` , ( { task } ) => {
196+ performTagTest ( {
197+ rawTag : task . name ,
198+ name : 'tag' ,
199+ targetSearchQuery : parseAsGlobalRegExp ( / w i t h e s c a p e d \\ b a c k s l a s h a n d \/ s l a s h / ) ,
200+ relativeTargetRange : undefined ,
201+ } )
202+ } )
203+
204+ test ( `[!tag:/regexp[s]?|"regular\\s+\\w{2}pressions?"/]` , ( { task } ) => {
205+ performTagTest ( {
206+ rawTag : task . name ,
207+ name : 'tag' ,
208+ targetSearchQuery : parseAsGlobalRegExp ( / r e g e x p [ s ] ? | " r e g u l a r \s + \w { 2 } p r e s s i o n s ? " / ) ,
209+ relativeTargetRange : undefined ,
210+ } )
211+ } )
212+ } )
213+
214+ describe ( 'Tags with RegExp target search query and target range' , ( ) => {
215+ test ( `[!tag:/reg(exp)|regular (expression)/:5]` , ( { task } ) => {
216+ performTagTest ( {
217+ rawTag : task . name ,
218+ name : 'tag' ,
219+ targetSearchQuery : parseAsGlobalRegExp ( / r e g ( e x p ) | r e g u l a r ( e x p r e s s i o n ) / ) ,
220+ relativeTargetRange : 5 ,
221+ } )
222+ } )
223+
224+ test ( `[!tag:/with escaped \\\\ backslash and \\/ slash/:-3]` , ( { task } ) => {
225+ performTagTest ( {
226+ rawTag : task . name ,
227+ name : 'tag' ,
228+ targetSearchQuery : parseAsGlobalRegExp ( / w i t h e s c a p e d \\ b a c k s l a s h a n d \/ s l a s h / ) ,
229+ relativeTargetRange : - 3 ,
230+ } )
231+ } )
232+
233+ test ( `[!tag:/regexp[s]?|"regular\\s+\\w{2}pressions?"/:1]` , ( { task } ) => {
234+ performTagTest ( {
235+ rawTag : task . name ,
236+ name : 'tag' ,
237+ targetSearchQuery : parseAsGlobalRegExp ( / r e g e x p [ s ] ? | " r e g u l a r \s + \w { 2 } p r e s s i o n s ? " / ) ,
238+ relativeTargetRange : 1 ,
239+ } )
240+ } )
241+ } )
174242 } )
175243
176244 function performTagTest ( test : Required < Omit < AnnotationTag , 'location' > > ) {
0 commit comments