Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 1 | # 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 |