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 397