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