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** The convert and posix modifiers are mutually exclusive 16*22dc650dSSadaf Ebrahimi 17*22dc650dSSadaf Ebrahimi# Separator must be / \ or . 18*22dc650dSSadaf Ebrahimi 19*22dc650dSSadaf Ebrahimi/a*b/convert_glob_separator=% 20*22dc650dSSadaf Ebrahimi** Invalid glob separator '%' 21*22dc650dSSadaf Ebrahimi 22*22dc650dSSadaf Ebrahimi# Can't have separator in a class 23*22dc650dSSadaf Ebrahimi 24*22dc650dSSadaf Ebrahimi"[ab/cd]" 25*22dc650dSSadaf Ebrahimi(?s)\A[ab/cd](?<!/)\z 26*22dc650dSSadaf Ebrahimi 27*22dc650dSSadaf Ebrahimi"[,-/]" 28*22dc650dSSadaf Ebrahimi(?s)\A[,-/](?<!/)\z 29*22dc650dSSadaf Ebrahimi 30*22dc650dSSadaf Ebrahimi/[ab/ 31*22dc650dSSadaf Ebrahimi** Pattern conversion error at offset 3: missing terminating ] for character class 32*22dc650dSSadaf Ebrahimi 33*22dc650dSSadaf Ebrahimi# Length check 34*22dc650dSSadaf Ebrahimi 35*22dc650dSSadaf Ebrahimi/abc/convert_length=11 36*22dc650dSSadaf Ebrahimi** Pattern conversion error at offset 3: no more memory 37*22dc650dSSadaf Ebrahimi 38*22dc650dSSadaf Ebrahimi/abc/convert_length=12 39*22dc650dSSadaf Ebrahimi(?s)\Aabc\z 40*22dc650dSSadaf Ebrahimi 41*22dc650dSSadaf Ebrahimi# Now some actual tests 42*22dc650dSSadaf Ebrahimi 43*22dc650dSSadaf Ebrahimi/a?b[]xy]*c/ 44*22dc650dSSadaf Ebrahimi(?s)\Aa[^/]b[\]xy](*COMMIT)[^/]*?c\z 45*22dc650dSSadaf Ebrahimi azb]1234c 46*22dc650dSSadaf Ebrahimi 0: azb]1234c 47*22dc650dSSadaf Ebrahimi 48*22dc650dSSadaf Ebrahimi# Tests from the gitwildmatch list, with some additions 49*22dc650dSSadaf Ebrahimi 50*22dc650dSSadaf Ebrahimi/foo/ 51*22dc650dSSadaf Ebrahimi(?s)\Afoo\z 52*22dc650dSSadaf Ebrahimi foo 53*22dc650dSSadaf Ebrahimi 0: foo 54*22dc650dSSadaf Ebrahimi/= Expect no match 55*22dc650dSSadaf EbrahimiNo match 56*22dc650dSSadaf Ebrahimi bar 57*22dc650dSSadaf EbrahimiNo match 58*22dc650dSSadaf Ebrahimi 59*22dc650dSSadaf Ebrahimi// 60*22dc650dSSadaf Ebrahimi(?s)\A\z 61*22dc650dSSadaf Ebrahimi \ 62*22dc650dSSadaf Ebrahimi 0: 63*22dc650dSSadaf Ebrahimi 64*22dc650dSSadaf Ebrahimi/???/ 65*22dc650dSSadaf Ebrahimi(?s)\A[^/][^/][^/]\z 66*22dc650dSSadaf Ebrahimi foo 67*22dc650dSSadaf Ebrahimi 0: foo 68*22dc650dSSadaf Ebrahimi\= Expect no match 69*22dc650dSSadaf Ebrahimi foobar 70*22dc650dSSadaf EbrahimiNo match 71*22dc650dSSadaf Ebrahimi 72*22dc650dSSadaf Ebrahimi/*/ 73*22dc650dSSadaf Ebrahimi(?s)\A[^/]*+\z 74*22dc650dSSadaf Ebrahimi foo 75*22dc650dSSadaf Ebrahimi 0: foo 76*22dc650dSSadaf Ebrahimi \ 77*22dc650dSSadaf Ebrahimi 0: 78*22dc650dSSadaf Ebrahimi 79*22dc650dSSadaf Ebrahimi/f*/ 80*22dc650dSSadaf Ebrahimi(?s)\Af(*COMMIT)[^/]*+\z 81*22dc650dSSadaf Ebrahimi foo 82*22dc650dSSadaf Ebrahimi 0: foo 83*22dc650dSSadaf Ebrahimi f 84*22dc650dSSadaf Ebrahimi 0: f 85*22dc650dSSadaf Ebrahimi 86*22dc650dSSadaf Ebrahimi/*f/ 87*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?f\z 88*22dc650dSSadaf Ebrahimi oof 89*22dc650dSSadaf Ebrahimi 0: oof 90*22dc650dSSadaf Ebrahimi\= Expect no match 91*22dc650dSSadaf Ebrahimi foo 92*22dc650dSSadaf EbrahimiNo match 93*22dc650dSSadaf Ebrahimi 94*22dc650dSSadaf Ebrahimi/*foo*/ 95*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?foo(*COMMIT)[^/]*+\z 96*22dc650dSSadaf Ebrahimi foo 97*22dc650dSSadaf Ebrahimi 0: foo 98*22dc650dSSadaf Ebrahimi food 99*22dc650dSSadaf Ebrahimi 0: food 100*22dc650dSSadaf Ebrahimi aprilfool 101*22dc650dSSadaf Ebrahimi 0: aprilfool 102*22dc650dSSadaf Ebrahimi 103*22dc650dSSadaf Ebrahimi/*ob*a*r*/ 104*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?ob(*COMMIT)[^/]*?a(*COMMIT)[^/]*?r(*COMMIT)[^/]*+\z 105*22dc650dSSadaf Ebrahimi foobar 106*22dc650dSSadaf Ebrahimi 0: foobar 107*22dc650dSSadaf Ebrahimi 108*22dc650dSSadaf Ebrahimi/*ab/ 109*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?ab\z 110*22dc650dSSadaf Ebrahimi aaaaaaabababab 111*22dc650dSSadaf Ebrahimi 0: aaaaaaabababab 112*22dc650dSSadaf Ebrahimi 113*22dc650dSSadaf Ebrahimi/foo\*/ 114*22dc650dSSadaf Ebrahimi(?s)\Afoo\*\z 115*22dc650dSSadaf Ebrahimi foo* 116*22dc650dSSadaf Ebrahimi 0: foo* 117*22dc650dSSadaf Ebrahimi 118*22dc650dSSadaf Ebrahimi/foo\*bar/ 119*22dc650dSSadaf Ebrahimi(?s)\Afoo\*bar\z 120*22dc650dSSadaf Ebrahimi\= Expect no match 121*22dc650dSSadaf Ebrahimi foobar 122*22dc650dSSadaf EbrahimiNo match 123*22dc650dSSadaf Ebrahimi 124*22dc650dSSadaf Ebrahimi/f\\oo/ 125*22dc650dSSadaf Ebrahimi(?s)\Af\\oo\z 126*22dc650dSSadaf Ebrahimi f\\oo 127*22dc650dSSadaf Ebrahimi 0: f\oo 128*22dc650dSSadaf Ebrahimi 129*22dc650dSSadaf Ebrahimi/*[al]?/ 130*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?[al][^/]\z 131*22dc650dSSadaf Ebrahimi ball 132*22dc650dSSadaf Ebrahimi 0: ball 133*22dc650dSSadaf Ebrahimi 134*22dc650dSSadaf Ebrahimi/[ten]/ 135*22dc650dSSadaf Ebrahimi(?s)\A[ten]\z 136*22dc650dSSadaf Ebrahimi\= Expect no match 137*22dc650dSSadaf Ebrahimi ten 138*22dc650dSSadaf EbrahimiNo match 139*22dc650dSSadaf Ebrahimi 140*22dc650dSSadaf Ebrahimi/t[a-g]n/ 141*22dc650dSSadaf Ebrahimi(?s)\At[a-g]n\z 142*22dc650dSSadaf Ebrahimi ten 143*22dc650dSSadaf Ebrahimi 0: ten 144*22dc650dSSadaf Ebrahimi 145*22dc650dSSadaf Ebrahimi/a[]]b/ 146*22dc650dSSadaf Ebrahimi(?s)\Aa[\]]b\z 147*22dc650dSSadaf Ebrahimi a]b 148*22dc650dSSadaf Ebrahimi 0: a]b 149*22dc650dSSadaf Ebrahimi 150*22dc650dSSadaf Ebrahimi/a[]a-]b/ 151*22dc650dSSadaf Ebrahimi(?s)\Aa[\]a\-]b\z 152*22dc650dSSadaf Ebrahimi 153*22dc650dSSadaf Ebrahimi/a[]-]b/ 154*22dc650dSSadaf Ebrahimi(?s)\Aa[\]\-]b\z 155*22dc650dSSadaf Ebrahimi a-b 156*22dc650dSSadaf Ebrahimi 0: a-b 157*22dc650dSSadaf Ebrahimi a]b 158*22dc650dSSadaf Ebrahimi 0: a]b 159*22dc650dSSadaf Ebrahimi\= Expect no match 160*22dc650dSSadaf Ebrahimi aab 161*22dc650dSSadaf EbrahimiNo match 162*22dc650dSSadaf Ebrahimi 163*22dc650dSSadaf Ebrahimi/a[]a-z]b/ 164*22dc650dSSadaf Ebrahimi(?s)\Aa[\]a-z]b\z 165*22dc650dSSadaf Ebrahimi aab 166*22dc650dSSadaf Ebrahimi 0: aab 167*22dc650dSSadaf Ebrahimi 168*22dc650dSSadaf Ebrahimi/]/ 169*22dc650dSSadaf Ebrahimi(?s)\A\]\z 170*22dc650dSSadaf Ebrahimi ] 171*22dc650dSSadaf Ebrahimi 0: ] 172*22dc650dSSadaf Ebrahimi 173*22dc650dSSadaf Ebrahimi/t[!a-g]n/ 174*22dc650dSSadaf Ebrahimi(?s)\At[^/a-g]n\z 175*22dc650dSSadaf Ebrahimi ton 176*22dc650dSSadaf Ebrahimi 0: ton 177*22dc650dSSadaf Ebrahimi\= Expect no match 178*22dc650dSSadaf Ebrahimi ten 179*22dc650dSSadaf EbrahimiNo match 180*22dc650dSSadaf Ebrahimi 181*22dc650dSSadaf Ebrahimi'[[:alpha:]][[:digit:]][[:upper:]]' 182*22dc650dSSadaf Ebrahimi(?s)\A[[:alpha:]][[:digit:]][[:upper:]]\z 183*22dc650dSSadaf Ebrahimi a1B 184*22dc650dSSadaf Ebrahimi 0: a1B 185*22dc650dSSadaf Ebrahimi 186*22dc650dSSadaf Ebrahimi'[[:digit:][:upper:][:space:]]' 187*22dc650dSSadaf Ebrahimi(?s)\A[[:digit:][:upper:][:space:]]\z 188*22dc650dSSadaf Ebrahimi A 189*22dc650dSSadaf Ebrahimi 0: A 190*22dc650dSSadaf Ebrahimi 1 191*22dc650dSSadaf Ebrahimi 0: 1 192*22dc650dSSadaf Ebrahimi \ \= 193*22dc650dSSadaf Ebrahimi 0: 194*22dc650dSSadaf Ebrahimi\= Expect no match 195*22dc650dSSadaf Ebrahimi a 196*22dc650dSSadaf EbrahimiNo match 197*22dc650dSSadaf Ebrahimi . 198*22dc650dSSadaf EbrahimiNo match 199*22dc650dSSadaf Ebrahimi 200*22dc650dSSadaf Ebrahimi'[a-c[:digit:]x-z]' 201*22dc650dSSadaf Ebrahimi(?s)\A[a-c[:digit:]x-z]\z 202*22dc650dSSadaf Ebrahimi 5 203*22dc650dSSadaf Ebrahimi 0: 5 204*22dc650dSSadaf Ebrahimi b 205*22dc650dSSadaf Ebrahimi 0: b 206*22dc650dSSadaf Ebrahimi y 207*22dc650dSSadaf Ebrahimi 0: y 208*22dc650dSSadaf Ebrahimi\= Expect no match 209*22dc650dSSadaf Ebrahimi q 210*22dc650dSSadaf EbrahimiNo match 211*22dc650dSSadaf Ebrahimi 212*22dc650dSSadaf Ebrahimi# End of gitwildmatch tests 213*22dc650dSSadaf Ebrahimi 214*22dc650dSSadaf Ebrahimi/*.j?g/ 215*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?\.j[^/]g\z 216*22dc650dSSadaf Ebrahimi pic01.jpg 217*22dc650dSSadaf Ebrahimi 0: pic01.jpg 218*22dc650dSSadaf Ebrahimi .jpg 219*22dc650dSSadaf Ebrahimi 0: .jpg 220*22dc650dSSadaf Ebrahimi pic02.jxg 221*22dc650dSSadaf Ebrahimi 0: pic02.jxg 222*22dc650dSSadaf Ebrahimi\= Expect no match 223*22dc650dSSadaf Ebrahimi pic03.j/g 224*22dc650dSSadaf EbrahimiNo match 225*22dc650dSSadaf Ebrahimi 226*22dc650dSSadaf Ebrahimi/A[+-0]B/ 227*22dc650dSSadaf Ebrahimi(?s)\AA[+-0](?<!/)B\z 228*22dc650dSSadaf Ebrahimi A+B 229*22dc650dSSadaf Ebrahimi 0: A+B 230*22dc650dSSadaf Ebrahimi A.B 231*22dc650dSSadaf Ebrahimi 0: A.B 232*22dc650dSSadaf Ebrahimi A0B 233*22dc650dSSadaf Ebrahimi 0: A0B 234*22dc650dSSadaf Ebrahimi\= Expect no match 235*22dc650dSSadaf Ebrahimi A/B 236*22dc650dSSadaf EbrahimiNo match 237*22dc650dSSadaf Ebrahimi 238*22dc650dSSadaf Ebrahimi/*x?z/ 239*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?x[^/]z\z 240*22dc650dSSadaf Ebrahimi abc.xyz 241*22dc650dSSadaf Ebrahimi 0: abc.xyz 242*22dc650dSSadaf Ebrahimi\= Expect no match 243*22dc650dSSadaf Ebrahimi .xyz 244*22dc650dSSadaf Ebrahimi 0: .xyz 245*22dc650dSSadaf Ebrahimi 246*22dc650dSSadaf Ebrahimi/?x?z/ 247*22dc650dSSadaf Ebrahimi(?s)\A[^/]x[^/]z\z 248*22dc650dSSadaf Ebrahimi axyz 249*22dc650dSSadaf Ebrahimi 0: axyz 250*22dc650dSSadaf Ebrahimi\= Expect no match 251*22dc650dSSadaf Ebrahimi .xyz 252*22dc650dSSadaf Ebrahimi 0: .xyz 253*22dc650dSSadaf Ebrahimi 254*22dc650dSSadaf Ebrahimi"[,-0]x?z" 255*22dc650dSSadaf Ebrahimi(?s)\A[,-0](?<!/)x[^/]z\z 256*22dc650dSSadaf Ebrahimi ,xyz 257*22dc650dSSadaf Ebrahimi 0: ,xyz 258*22dc650dSSadaf Ebrahimi\= Expect no match 259*22dc650dSSadaf Ebrahimi /xyz 260*22dc650dSSadaf EbrahimiNo match 261*22dc650dSSadaf Ebrahimi .xyz 262*22dc650dSSadaf Ebrahimi 0: .xyz 263*22dc650dSSadaf Ebrahimi 264*22dc650dSSadaf Ebrahimi".x*" 265*22dc650dSSadaf Ebrahimi(?s)\A\.x(*COMMIT)[^/]*+\z 266*22dc650dSSadaf Ebrahimi .xabc 267*22dc650dSSadaf Ebrahimi 0: .xabc 268*22dc650dSSadaf Ebrahimi 269*22dc650dSSadaf Ebrahimi/a[--0]z/ 270*22dc650dSSadaf Ebrahimi(?s)\Aa[\--0](?<!/)z\z 271*22dc650dSSadaf Ebrahimi a-z 272*22dc650dSSadaf Ebrahimi 0: a-z 273*22dc650dSSadaf Ebrahimi a.z 274*22dc650dSSadaf Ebrahimi 0: a.z 275*22dc650dSSadaf Ebrahimi a0z 276*22dc650dSSadaf Ebrahimi 0: a0z 277*22dc650dSSadaf Ebrahimi\= Expect no match 278*22dc650dSSadaf Ebrahimi a/z 279*22dc650dSSadaf EbrahimiNo match 280*22dc650dSSadaf Ebrahimi a1z 281*22dc650dSSadaf EbrahimiNo match 282*22dc650dSSadaf Ebrahimi 283*22dc650dSSadaf Ebrahimi/<[a-c-d]>/ 284*22dc650dSSadaf Ebrahimi(?s)\A<[a-c\-d]>\z 285*22dc650dSSadaf Ebrahimi <a> 286*22dc650dSSadaf Ebrahimi 0: <a> 287*22dc650dSSadaf Ebrahimi <b> 288*22dc650dSSadaf Ebrahimi 0: <b> 289*22dc650dSSadaf Ebrahimi <c> 290*22dc650dSSadaf Ebrahimi 0: <c> 291*22dc650dSSadaf Ebrahimi <d> 292*22dc650dSSadaf Ebrahimi 0: <d> 293*22dc650dSSadaf Ebrahimi <-> 294*22dc650dSSadaf Ebrahimi 0: <-> 295*22dc650dSSadaf Ebrahimi 296*22dc650dSSadaf Ebrahimi/a[[:digit:].]z/ 297*22dc650dSSadaf Ebrahimi(?s)\Aa[[:digit:].]z\z 298*22dc650dSSadaf Ebrahimi a1z 299*22dc650dSSadaf Ebrahimi 0: a1z 300*22dc650dSSadaf Ebrahimi a.z 301*22dc650dSSadaf Ebrahimi 0: a.z 302*22dc650dSSadaf Ebrahimi\= Expect no match 303*22dc650dSSadaf Ebrahimi a:z 304*22dc650dSSadaf EbrahimiNo match 305*22dc650dSSadaf Ebrahimi 306*22dc650dSSadaf Ebrahimi/a[[:digit].]z/ 307*22dc650dSSadaf Ebrahimi(?s)\Aa[\[:digit]\.\]z\z 308*22dc650dSSadaf Ebrahimi a[.]z 309*22dc650dSSadaf Ebrahimi 0: a[.]z 310*22dc650dSSadaf Ebrahimi a:.]z 311*22dc650dSSadaf Ebrahimi 0: a:.]z 312*22dc650dSSadaf Ebrahimi ad.]z 313*22dc650dSSadaf Ebrahimi 0: ad.]z 314*22dc650dSSadaf Ebrahimi 315*22dc650dSSadaf Ebrahimi/<[[:a[:digit:]b]>/ 316*22dc650dSSadaf Ebrahimi(?s)\A<[\[:a[:digit:]b]>\z 317*22dc650dSSadaf Ebrahimi <[> 318*22dc650dSSadaf Ebrahimi 0: <[> 319*22dc650dSSadaf Ebrahimi <:> 320*22dc650dSSadaf Ebrahimi 0: <:> 321*22dc650dSSadaf Ebrahimi <a> 322*22dc650dSSadaf Ebrahimi 0: <a> 323*22dc650dSSadaf Ebrahimi <9> 324*22dc650dSSadaf Ebrahimi 0: <9> 325*22dc650dSSadaf Ebrahimi <b> 326*22dc650dSSadaf Ebrahimi 0: <b> 327*22dc650dSSadaf Ebrahimi\= Expect no match 328*22dc650dSSadaf Ebrahimi <d> 329*22dc650dSSadaf EbrahimiNo match 330*22dc650dSSadaf Ebrahimi 331*22dc650dSSadaf Ebrahimi/a*b/convert_glob_separator=\ 332*22dc650dSSadaf Ebrahimi(?s)\Aa(*COMMIT)[^\\]*?b\z 333*22dc650dSSadaf Ebrahimi 334*22dc650dSSadaf Ebrahimi/a*b/convert_glob_separator=. 335*22dc650dSSadaf Ebrahimi(?s)\Aa(*COMMIT)[^\.]*?b\z 336*22dc650dSSadaf Ebrahimi 337*22dc650dSSadaf Ebrahimi/a*b/convert_glob_separator=/ 338*22dc650dSSadaf Ebrahimi(?s)\Aa(*COMMIT)[^/]*?b\z 339*22dc650dSSadaf Ebrahimi 340*22dc650dSSadaf Ebrahimi# Non control character checking 341*22dc650dSSadaf Ebrahimi 342*22dc650dSSadaf Ebrahimi/A\B\\C\D/ 343*22dc650dSSadaf Ebrahimi(?s)\AAB\\CD\z 344*22dc650dSSadaf Ebrahimi 345*22dc650dSSadaf Ebrahimi/\\{}\?\*+\[\]()|.^$/ 346*22dc650dSSadaf Ebrahimi(?s)\A\\\{\}\?\*\+\[\]\(\)\|\.\^\$\z 347*22dc650dSSadaf Ebrahimi 348*22dc650dSSadaf Ebrahimi/*a*\/*b*/ 349*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?a(*COMMIT)[^/]*?/(*COMMIT)[^/]*?b(*COMMIT)[^/]*+\z 350*22dc650dSSadaf Ebrahimi 351*22dc650dSSadaf Ebrahimi/?a?\/?b?/ 352*22dc650dSSadaf Ebrahimi(?s)\A[^/]a[^/]/[^/]b[^/]\z 353*22dc650dSSadaf Ebrahimi 354*22dc650dSSadaf Ebrahimi/[a\\b\c][]][-][\]\-]/ 355*22dc650dSSadaf Ebrahimi(?s)\A[a\\bc][\]][\-][\]\-]\z 356*22dc650dSSadaf Ebrahimi 357*22dc650dSSadaf Ebrahimi/[^a\\b\c][!]][!-][^\]\-]/ 358*22dc650dSSadaf Ebrahimi(?s)\A[^/a\\bc][^/\]][^/\-][^/\]\-]\z 359*22dc650dSSadaf Ebrahimi 360*22dc650dSSadaf Ebrahimi/[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:word:][:xdigit:]]/ 361*22dc650dSSadaf Ebrahimi(?s)\A[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:word:][:xdigit:]](?<!/)\z 362*22dc650dSSadaf Ebrahimi 363*22dc650dSSadaf Ebrahimi"[/-/]" 364*22dc650dSSadaf Ebrahimi(?s)\A[/-/](?<!/)\z 365*22dc650dSSadaf Ebrahimi 366*22dc650dSSadaf Ebrahimi/[-----]/ 367*22dc650dSSadaf Ebrahimi(?s)\A[\--\-\-\-]\z 368*22dc650dSSadaf Ebrahimi 369*22dc650dSSadaf Ebrahimi/[------]/ 370*22dc650dSSadaf Ebrahimi(?s)\A[\--\-\--\-]\z 371*22dc650dSSadaf Ebrahimi 372*22dc650dSSadaf Ebrahimi/[!------]/ 373*22dc650dSSadaf Ebrahimi(?s)\A[^/\--\-\--\-]\z 374*22dc650dSSadaf Ebrahimi 375*22dc650dSSadaf Ebrahimi/[[:alpha:]-a]/ 376*22dc650dSSadaf Ebrahimi(?s)\A[[:alpha:]\-a]\z 377*22dc650dSSadaf Ebrahimi 378*22dc650dSSadaf Ebrahimi/[[:alpha:]][[:punct:]][[:ascii:]]/ 379*22dc650dSSadaf Ebrahimi(?s)\A[[:alpha:]][[:punct:]](?<!/)[[:ascii:]](?<!/)\z 380*22dc650dSSadaf Ebrahimi 381*22dc650dSSadaf Ebrahimi/[a-[:alpha:]]/ 382*22dc650dSSadaf Ebrahimi** Pattern conversion error at offset 4: invalid syntax 383*22dc650dSSadaf Ebrahimi 384*22dc650dSSadaf Ebrahimi/[[:alpha:/ 385*22dc650dSSadaf Ebrahimi** Pattern conversion error at offset 9: missing terminating ] for character class 386*22dc650dSSadaf Ebrahimi 387*22dc650dSSadaf Ebrahimi/[[:alpha:]/ 388*22dc650dSSadaf Ebrahimi** Pattern conversion error at offset 10: missing terminating ] for character class 389*22dc650dSSadaf Ebrahimi 390*22dc650dSSadaf Ebrahimi/[[:alphaa:]]/ 391*22dc650dSSadaf Ebrahimi(?s)\A[\[:alphaa:]\]\z 392*22dc650dSSadaf Ebrahimi 393*22dc650dSSadaf Ebrahimi/[[:xdigi:]]/ 394*22dc650dSSadaf Ebrahimi(?s)\A[\[:xdigi:]\]\z 395*22dc650dSSadaf Ebrahimi 396*22dc650dSSadaf Ebrahimi/[[:xdigit::]]/ 397*22dc650dSSadaf Ebrahimi(?s)\A[\[:xdigit::]\]\z 398*22dc650dSSadaf Ebrahimi 399*22dc650dSSadaf Ebrahimi/****/ 400*22dc650dSSadaf Ebrahimi(?s) 401*22dc650dSSadaf Ebrahimi 402*22dc650dSSadaf Ebrahimi/**\/abc/ 403*22dc650dSSadaf Ebrahimi(?s)(?:\A|/)abc\z 404*22dc650dSSadaf Ebrahimi abc 405*22dc650dSSadaf Ebrahimi 0: abc 406*22dc650dSSadaf Ebrahimi x/abc 407*22dc650dSSadaf Ebrahimi 0: /abc 408*22dc650dSSadaf Ebrahimi xabc 409*22dc650dSSadaf EbrahimiNo match 410*22dc650dSSadaf Ebrahimi 411*22dc650dSSadaf Ebrahimi/abc\/**/ 412*22dc650dSSadaf Ebrahimi(?s)\Aabc/ 413*22dc650dSSadaf Ebrahimi 414*22dc650dSSadaf Ebrahimi/abc\/**\/abc/ 415*22dc650dSSadaf Ebrahimi(?s)\Aabc/(*COMMIT)(?:.*?/)??abc\z 416*22dc650dSSadaf Ebrahimi 417*22dc650dSSadaf Ebrahimi/**\/*a*b*g*n*t/ 418*22dc650dSSadaf Ebrahimi(?s)(?:\A|/)(?>[^/]*?a)(?>[^/]*?b)(?>[^/]*?g)(?>[^/]*?n)(?>[^/]*?t\z) 419*22dc650dSSadaf Ebrahimi abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt 420*22dc650dSSadaf Ebrahimi 0: /abcdefghijklmnop.txt 421*22dc650dSSadaf Ebrahimi 422*22dc650dSSadaf Ebrahimi/**\/*a*\/**/ 423*22dc650dSSadaf Ebrahimi(?s)(?:\A|/)(?>[^/]*?a)(?>[^/]*?/) 424*22dc650dSSadaf Ebrahimi xx/xx/xx/xax/xx/xb 425*22dc650dSSadaf Ebrahimi 0: /xax/ 426*22dc650dSSadaf Ebrahimi 427*22dc650dSSadaf Ebrahimi/**\/*a*/ 428*22dc650dSSadaf Ebrahimi(?s)(?:\A|/)(?>[^/]*?a)(?>[^/]*+\z) 429*22dc650dSSadaf Ebrahimi xx/xx/xx/xax 430*22dc650dSSadaf Ebrahimi 0: /xax 431*22dc650dSSadaf Ebrahimi xx/xx/xx/xax/xx 432*22dc650dSSadaf EbrahimiNo match 433*22dc650dSSadaf Ebrahimi 434*22dc650dSSadaf Ebrahimi/**\/*a*\/**\/*b*/ 435*22dc650dSSadaf Ebrahimi(?s)(?:\A|/)(?>[^/]*?a)(?>[^/]*?/)(*COMMIT)(?:.*?/)??(?>[^/]*?b)(?>[^/]*+\z) 436*22dc650dSSadaf Ebrahimi xx/xx/xx/xax/xx/xb 437*22dc650dSSadaf Ebrahimi 0: /xax/xx/xb 438*22dc650dSSadaf Ebrahimi xx/xx/xx/xax/xx/x 439*22dc650dSSadaf EbrahimiNo match 440*22dc650dSSadaf Ebrahimi 441*22dc650dSSadaf Ebrahimi"**a"convert=glob 442*22dc650dSSadaf Ebrahimi(?s)a\z 443*22dc650dSSadaf Ebrahimi a 444*22dc650dSSadaf Ebrahimi 0: a 445*22dc650dSSadaf Ebrahimi c/b/a 446*22dc650dSSadaf Ebrahimi 0: a 447*22dc650dSSadaf Ebrahimi c/b/aaa 448*22dc650dSSadaf Ebrahimi 0: a 449*22dc650dSSadaf Ebrahimi 450*22dc650dSSadaf Ebrahimi"a**/b"convert=glob 451*22dc650dSSadaf Ebrahimi(?s)\Aa(*COMMIT).*?/b\z 452*22dc650dSSadaf Ebrahimi a/b 453*22dc650dSSadaf Ebrahimi 0: a/b 454*22dc650dSSadaf Ebrahimi ab 455*22dc650dSSadaf EbrahimiNo match 456*22dc650dSSadaf Ebrahimi 457*22dc650dSSadaf Ebrahimi"a/**b"convert=glob 458*22dc650dSSadaf Ebrahimi(?s)\Aa/(*COMMIT).*?b\z 459*22dc650dSSadaf Ebrahimi a/b 460*22dc650dSSadaf Ebrahimi 0: a/b 461*22dc650dSSadaf Ebrahimi ab 462*22dc650dSSadaf EbrahimiNo match 463*22dc650dSSadaf Ebrahimi 464*22dc650dSSadaf Ebrahimi#pattern convert=glob:glob_no_starstar 465*22dc650dSSadaf Ebrahimi 466*22dc650dSSadaf Ebrahimi/***/ 467*22dc650dSSadaf Ebrahimi(?s)\A[^/]*+\z 468*22dc650dSSadaf Ebrahimi 469*22dc650dSSadaf Ebrahimi/**a**/ 470*22dc650dSSadaf Ebrahimi(?s)\A[^/]*?a(*COMMIT)[^/]*+\z 471*22dc650dSSadaf Ebrahimi 472*22dc650dSSadaf Ebrahimi#pattern convert=unset 473*22dc650dSSadaf Ebrahimi#pattern convert=glob:glob_no_wild_separator 474*22dc650dSSadaf Ebrahimi 475*22dc650dSSadaf Ebrahimi/*/ 476*22dc650dSSadaf Ebrahimi(?s) 477*22dc650dSSadaf Ebrahimi 478*22dc650dSSadaf Ebrahimi/*a*/ 479*22dc650dSSadaf Ebrahimi(?s)a 480*22dc650dSSadaf Ebrahimi 481*22dc650dSSadaf Ebrahimi/**a**/ 482*22dc650dSSadaf Ebrahimi(?s)a 483*22dc650dSSadaf Ebrahimi 484*22dc650dSSadaf Ebrahimi/a*b/ 485*22dc650dSSadaf Ebrahimi(?s)\Aa(*COMMIT).*?b\z 486*22dc650dSSadaf Ebrahimi 487*22dc650dSSadaf Ebrahimi/*a*b*/ 488*22dc650dSSadaf Ebrahimi(?s)a(*COMMIT).*?b 489*22dc650dSSadaf Ebrahimi 490*22dc650dSSadaf Ebrahimi/??a??/ 491*22dc650dSSadaf Ebrahimi(?s)\A..a..\z 492*22dc650dSSadaf Ebrahimi 493*22dc650dSSadaf Ebrahimi#pattern convert=unset 494*22dc650dSSadaf Ebrahimi#pattern convert=glob,convert_glob_escape=0 495*22dc650dSSadaf Ebrahimi 496*22dc650dSSadaf Ebrahimi/a\b\cd/ 497*22dc650dSSadaf Ebrahimi(?s)\Aa\\b\\cd\z 498*22dc650dSSadaf Ebrahimi 499*22dc650dSSadaf Ebrahimi/**\/a/ 500*22dc650dSSadaf Ebrahimi(?s)\\/a\z 501*22dc650dSSadaf Ebrahimi 502*22dc650dSSadaf Ebrahimi/a`*b/convert_glob_escape=` 503*22dc650dSSadaf Ebrahimi(?s)\Aa\*b\z 504*22dc650dSSadaf Ebrahimi 505*22dc650dSSadaf Ebrahimi/a`*b/convert_glob_escape=0 506*22dc650dSSadaf Ebrahimi(?s)\Aa`(*COMMIT)[^/]*?b\z 507*22dc650dSSadaf Ebrahimi 508*22dc650dSSadaf Ebrahimi/a`*b/convert_glob_escape=x 509*22dc650dSSadaf Ebrahimi** Invalid glob escape 'x' 510*22dc650dSSadaf Ebrahimi 511*22dc650dSSadaf Ebrahimi# -------- Tests of extended POSIX conversion -------- 512*22dc650dSSadaf Ebrahimi 513*22dc650dSSadaf Ebrahimi#pattern convert=unset:posix_extended 514*22dc650dSSadaf Ebrahimi 515*22dc650dSSadaf Ebrahimi/<[[:a[:digit:]b]>/ 516*22dc650dSSadaf Ebrahimi(*NUL)<[[:a[:digit:]b]> 517*22dc650dSSadaf Ebrahimi <[> 518*22dc650dSSadaf Ebrahimi 0: <[> 519*22dc650dSSadaf Ebrahimi <:> 520*22dc650dSSadaf Ebrahimi 0: <:> 521*22dc650dSSadaf Ebrahimi <a> 522*22dc650dSSadaf Ebrahimi 0: <a> 523*22dc650dSSadaf Ebrahimi <9> 524*22dc650dSSadaf Ebrahimi 0: <9> 525*22dc650dSSadaf Ebrahimi <b> 526*22dc650dSSadaf Ebrahimi 0: <b> 527*22dc650dSSadaf Ebrahimi\= Expect no match 528*22dc650dSSadaf Ebrahimi <d> 529*22dc650dSSadaf EbrahimiNo match 530*22dc650dSSadaf Ebrahimi 531*22dc650dSSadaf Ebrahimi/a+\1b\\c|d[ab\c]/ 532*22dc650dSSadaf Ebrahimi(*NUL)a+1b\\c|d[ab\\c] 533*22dc650dSSadaf Ebrahimi 534*22dc650dSSadaf Ebrahimi/<[]bc]>/ 535*22dc650dSSadaf Ebrahimi(*NUL)<[]bc]> 536*22dc650dSSadaf Ebrahimi <]> 537*22dc650dSSadaf Ebrahimi 0: <]> 538*22dc650dSSadaf Ebrahimi <b> 539*22dc650dSSadaf Ebrahimi 0: <b> 540*22dc650dSSadaf Ebrahimi <c> 541*22dc650dSSadaf Ebrahimi 0: <c> 542*22dc650dSSadaf Ebrahimi 543*22dc650dSSadaf Ebrahimi/<[^]bc]>/ 544*22dc650dSSadaf Ebrahimi(*NUL)<[^]bc]> 545*22dc650dSSadaf Ebrahimi <.> 546*22dc650dSSadaf Ebrahimi 0: <.> 547*22dc650dSSadaf Ebrahimi\= Expect no match 548*22dc650dSSadaf Ebrahimi <]> 549*22dc650dSSadaf EbrahimiNo match 550*22dc650dSSadaf Ebrahimi <b> 551*22dc650dSSadaf EbrahimiNo match 552*22dc650dSSadaf Ebrahimi 553*22dc650dSSadaf Ebrahimi/(a)\1b/ 554*22dc650dSSadaf Ebrahimi(*NUL)(a)1b 555*22dc650dSSadaf Ebrahimi a1b 556*22dc650dSSadaf Ebrahimi 0: a1b 557*22dc650dSSadaf Ebrahimi 1: a 558*22dc650dSSadaf Ebrahimi\= Expect no match 559*22dc650dSSadaf Ebrahimi aab 560*22dc650dSSadaf EbrahimiNo match 561*22dc650dSSadaf Ebrahimi 562*22dc650dSSadaf Ebrahimi/(ab)c)d]/ 563*22dc650dSSadaf Ebrahimi(*NUL)(ab)c\)d\] 564*22dc650dSSadaf Ebrahimi Xabc)d]Y 565*22dc650dSSadaf Ebrahimi 0: abc)d] 566*22dc650dSSadaf Ebrahimi 1: ab 567*22dc650dSSadaf Ebrahimi 568*22dc650dSSadaf Ebrahimi/a***b/ 569*22dc650dSSadaf Ebrahimi(*NUL)a*b 570*22dc650dSSadaf Ebrahimi 571*22dc650dSSadaf Ebrahimi# -------- Tests of basic POSIX conversion -------- 572*22dc650dSSadaf Ebrahimi 573*22dc650dSSadaf Ebrahimi#pattern convert=unset:posix_basic 574*22dc650dSSadaf Ebrahimi 575*22dc650dSSadaf Ebrahimi/a*b+c\+[def](ab)\(cd\)/ 576*22dc650dSSadaf Ebrahimi(*NUL)a*b\+c\+[def]\(ab\)(cd) 577*22dc650dSSadaf Ebrahimi 578*22dc650dSSadaf Ebrahimi/\(a\)\1b/ 579*22dc650dSSadaf Ebrahimi(*NUL)(a)\1b 580*22dc650dSSadaf Ebrahimi aab 581*22dc650dSSadaf Ebrahimi 0: aab 582*22dc650dSSadaf Ebrahimi 1: a 583*22dc650dSSadaf Ebrahimi\= Expect no match 584*22dc650dSSadaf Ebrahimi a1b 585*22dc650dSSadaf EbrahimiNo match 586*22dc650dSSadaf Ebrahimi 587*22dc650dSSadaf Ebrahimi/how.to how\.to/ 588*22dc650dSSadaf Ebrahimi(*NUL)how.to how\.to 589*22dc650dSSadaf Ebrahimi how\nto how.to 590*22dc650dSSadaf Ebrahimi 0: how\x0ato how.to 591*22dc650dSSadaf Ebrahimi\= Expect no match 592*22dc650dSSadaf Ebrahimi how\x{0}to how.to 593*22dc650dSSadaf EbrahimiNo match 594*22dc650dSSadaf Ebrahimi 595*22dc650dSSadaf Ebrahimi/^how to \^how to/ 596*22dc650dSSadaf Ebrahimi(*NUL)^how to \^how to 597*22dc650dSSadaf Ebrahimi 598*22dc650dSSadaf Ebrahimi/^*abc/ 599*22dc650dSSadaf Ebrahimi(*NUL)^\*abc 600*22dc650dSSadaf Ebrahimi 601*22dc650dSSadaf Ebrahimi/*abc/ 602*22dc650dSSadaf Ebrahimi(*NUL)\*abc 603*22dc650dSSadaf Ebrahimi X*abcY 604*22dc650dSSadaf Ebrahimi 0: *abc 605*22dc650dSSadaf Ebrahimi 606*22dc650dSSadaf Ebrahimi/**abc/ 607*22dc650dSSadaf Ebrahimi(*NUL)\**abc 608*22dc650dSSadaf Ebrahimi XabcY 609*22dc650dSSadaf Ebrahimi 0: abc 610*22dc650dSSadaf Ebrahimi X*abcY 611*22dc650dSSadaf Ebrahimi 0: *abc 612*22dc650dSSadaf Ebrahimi X**abcY 613*22dc650dSSadaf Ebrahimi 0: **abc 614*22dc650dSSadaf Ebrahimi 615*22dc650dSSadaf Ebrahimi/*ab\(*cd\)/ 616*22dc650dSSadaf Ebrahimi(*NUL)\*ab(\*cd) 617*22dc650dSSadaf Ebrahimi 618*22dc650dSSadaf Ebrahimi/^b\(c^d\)\(^e^f\)/ 619*22dc650dSSadaf Ebrahimi(*NUL)^b(c\^d)(^e\^f) 620*22dc650dSSadaf Ebrahimi 621*22dc650dSSadaf Ebrahimi/a***b/ 622*22dc650dSSadaf Ebrahimi(*NUL)a*b 623*22dc650dSSadaf Ebrahimi 624*22dc650dSSadaf Ebrahimi# End of testinput24 625