blob: 380e23cd19d2a826a1d120f8a25d2327b9e4eed4 [file] [log] [blame]
Elliott Hughes9bc971b2018-07-27 13:23:14 -07001# This file tests the auxiliary pattern conversion features of the PCRE2
2# library, in non-UTF mode.
3
4#forbid_utf
5#newline_default lf any anycrlf
6
7# -------- Tests of glob conversion --------
8
9# Set the glob separator explicitly so that different OS defaults are not a
10# problem. Then test various errors.
11
12#pattern convert=glob,convert_glob_escape=\,convert_glob_separator=/
13
14/abc/posix
15
16# Separator must be / \ or .
17
18/a*b/convert_glob_separator=%
19
20# Can't have separator in a class
21
22"[ab/cd]"
23
24"[,-/]"
25
26/[ab/
27
28# Length check
29
30/abc/convert_length=11
31
32/abc/convert_length=12
33
34# Now some actual tests
35
36/a?b[]xy]*c/
37 azb]1234c
38
39# Tests from the gitwildmatch list, with some additions
40
41/foo/
42 foo
43/= Expect no match
44 bar
45
46//
47 \
48
49/???/
50 foo
51\= Expect no match
52 foobar
53
54/*/
55 foo
56 \
57
58/f*/
59 foo
60 f
61
62/*f/
63 oof
64\= Expect no match
65 foo
66
67/*foo*/
68 foo
69 food
70 aprilfool
71
72/*ob*a*r*/
73 foobar
74
75/*ab/
76 aaaaaaabababab
77
78/foo\*/
79 foo*
80
81/foo\*bar/
82\= Expect no match
83 foobar
84
85/f\\oo/
86 f\\oo
87
88/*[al]?/
89 ball
90
91/[ten]/
92\= Expect no match
93 ten
94
95/t[a-g]n/
96 ten
97
98/a[]]b/
99 a]b
100
101/a[]a-]b/
102
103/a[]-]b/
104 a-b
105 a]b
106\= Expect no match
107 aab
108
109/a[]a-z]b/
110 aab
111
112/]/
113 ]
114
115/t[!a-g]n/
116 ton
117\= Expect no match
118 ten
119
120'[[:alpha:]][[:digit:]][[:upper:]]'
121 a1B
122
123'[[:digit:][:upper:][:space:]]'
124 A
125 1
126 \ \=
127\= Expect no match
128 a
129 .
130
131'[a-c[:digit:]x-z]'
132 5
133 b
134 y
135\= Expect no match
136 q
137
138# End of gitwildmatch tests
139
140/*.j?g/
141 pic01.jpg
142 .jpg
143 pic02.jxg
144\= Expect no match
145 pic03.j/g
146
147/A[+-0]B/
148 A+B
149 A.B
150 A0B
151\= Expect no match
152 A/B
153
154/*x?z/
155 abc.xyz
156\= Expect no match
157 .xyz
158
159/?x?z/
160 axyz
161\= Expect no match
162 .xyz
163
164"[,-0]x?z"
165 ,xyz
166\= Expect no match
167 /xyz
168 .xyz
169
170".x*"
171 .xabc
172
173/a[--0]z/
174 a-z
175 a.z
176 a0z
177\= Expect no match
178 a/z
179 a1z
180
181/<[a-c-d]>/
182 <a>
183 <b>
184 <c>
185 <d>
186 <->
187
188/a[[:digit:].]z/
189 a1z
190 a.z
191\= Expect no match
192 a:z
193
194/a[[:digit].]z/
195 a[.]z
196 a:.]z
197 ad.]z
198
199/<[[:a[:digit:]b]>/
200 <[>
201 <:>
202 <a>
203 <9>
204 <b>
205\= Expect no match
206 <d>
207
208/a*b/convert_glob_separator=\
209
210/a*b/convert_glob_separator=.
211
212/a*b/convert_glob_separator=/
213
214# Non control character checking
215
216/A\B\\C\D/
217
218/\\{}\?\*+\[\]()|.^$/
219
220/*a*\/*b*/
221
222/?a?\/?b?/
223
224/[a\\b\c][]][-][\]\-]/
225
226/[^a\\b\c][!]][!-][^\]\-]/
227
228/[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:word:][:xdigit:]]/
229
230"[/-/]"
231
232/[-----]/
233
234/[------]/
235
236/[!------]/
237
238/[[:alpha:]-a]/
239
240/[[:alpha:]][[:punct:]][[:ascii:]]/
241
242/[a-[:alpha:]]/
243
244/[[:alpha:/
245
246/[[:alpha:]/
247
248/[[:alphaa:]]/
249
250/[[:xdigi:]]/
251
252/[[:xdigit::]]/
253
254/****/
255
256/**\/abc/
257 abc
258 x/abc
259 xabc
260
261/abc\/**/
262
263/abc\/**\/abc/
264
265/**\/*a*b*g*n*t/
266 abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt
267
268/**\/*a*\/**/
269 xx/xx/xx/xax/xx/xb
270
271/**\/*a*/
272 xx/xx/xx/xax
273 xx/xx/xx/xax/xx
274
275/**\/*a*\/**\/*b*/
276 xx/xx/xx/xax/xx/xb
277 xx/xx/xx/xax/xx/x
278
279"**a"convert=glob
280 a
281 c/b/a
282 c/b/aaa
283
284"a**/b"convert=glob
285 a/b
286 ab
287
288"a/**b"convert=glob
289 a/b
290 ab
291
292#pattern convert=glob:glob_no_starstar
293
294/***/
295
296/**a**/
297
298#pattern convert=unset
299#pattern convert=glob:glob_no_wild_separator
300
301/*/
302
303/*a*/
304
305/**a**/
306
307/a*b/
308
309/*a*b*/
310
311/??a??/
312
313#pattern convert=unset
314#pattern convert=glob,convert_glob_escape=0
315
316/a\b\cd/
317
318/**\/a/
319
320/a`*b/convert_glob_escape=`
321
322/a`*b/convert_glob_escape=0
323
324/a`*b/convert_glob_escape=x
325
326# -------- Tests of extended POSIX conversion --------
327
328#pattern convert=unset:posix_extended
329
330/<[[:a[:digit:]b]>/
331 <[>
332 <:>
333 <a>
334 <9>
335 <b>
336\= Expect no match
337 <d>
338
339/a+\1b\\c|d[ab\c]/
340
341/<[]bc]>/
342 <]>
343 <b>
344 <c>
345
346/<[^]bc]>/
347 <.>
348\= Expect no match
349 <]>
350 <b>
351
352/(a)\1b/
353 a1b
354\= Expect no match
355 aab
356
357/(ab)c)d]/
358 Xabc)d]Y
359
360/a***b/
361
362# -------- Tests of basic POSIX conversion --------
363
364#pattern convert=unset:posix_basic
365
366/a*b+c\+[def](ab)\(cd\)/
367
368/\(a\)\1b/
369 aab
370\= Expect no match
371 a1b
372
373/how.to how\.to/
374 how\nto how.to
375\= Expect no match
376 how\x{0}to how.to
377
378/^how to \^how to/
379
380/^*abc/
381
382/*abc/
383 X*abcY
384
385/**abc/
386 XabcY
387 X*abcY
388 X**abcY
389
390/*ab\(*cd\)/
391
392/^b\(c^d\)\(^e^f\)/
393
394/a***b/
395
396# End of testinput24