# This file tests the auxiliary pattern conversion features of the PCRE2 # library, in non-UTF mode. #forbid_utf #newline_default lf any anycrlf # -------- Tests of glob conversion -------- # Set the glob separator explicitly so that different OS defaults are not a # problem. Then test various errors. #pattern convert=glob,convert_glob_escape=\,convert_glob_separator=/ /abc/posix # Separator must be / \ or . /a*b/convert_glob_separator=% # Can't have separator in a class "[ab/cd]" "[,-/]" /[ab/ # Length check /abc/convert_length=11 /abc/convert_length=12 # Now some actual tests /a?b[]xy]*c/ azb]1234c # Tests from the gitwildmatch list, with some additions /foo/ foo /= Expect no match bar // \ /???/ foo \= Expect no match foobar /*/ foo \ /f*/ foo f /*f/ oof \= Expect no match foo /*foo*/ foo food aprilfool /*ob*a*r*/ foobar /*ab/ aaaaaaabababab /foo\*/ foo* /foo\*bar/ \= Expect no match foobar /f\\oo/ f\\oo /*[al]?/ ball /[ten]/ \= Expect no match ten /t[a-g]n/ ten /a[]]b/ a]b /a[]a-]b/ /a[]-]b/ a-b a]b \= Expect no match aab /a[]a-z]b/ aab /]/ ] /t[!a-g]n/ ton \= Expect no match ten '[[:alpha:]][[:digit:]][[:upper:]]' a1B '[[:digit:][:upper:][:space:]]' A 1 \ \= \= Expect no match a . '[a-c[:digit:]x-z]' 5 b y \= Expect no match q # End of gitwildmatch tests /*.j?g/ pic01.jpg .jpg pic02.jxg \= Expect no match pic03.j/g /A[+-0]B/ A+B A.B A0B \= Expect no match A/B /*x?z/ abc.xyz \= Expect no match .xyz /?x?z/ axyz \= Expect no match .xyz "[,-0]x?z" ,xyz \= Expect no match /xyz .xyz ".x*" .xabc /a[--0]z/ a-z a.z a0z \= Expect no match a/z a1z /<[a-c-d]>/ <-> /a[[:digit:].]z/ a1z a.z \= Expect no match a:z /a[[:digit].]z/ a[.]z a:.]z ad.]z /<[[:a[:digit:]b]>/ <[> <:> <9> \= Expect no match /a*b/convert_glob_separator=\ /a*b/convert_glob_separator=. /a*b/convert_glob_separator=/ # Non control character checking /A\B\\C\D/ /\\{}\?\*+\[\]()|.^$/ /*a*\/*b*/ /?a?\/?b?/ /[a\\b\c][]][-][\]\-]/ /[^a\\b\c][!]][!-][^\]\-]/ /[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:word:][:xdigit:]]/ "[/-/]" /[-----]/ /[------]/ /[!------]/ /[[:alpha:]-a]/ /[[:alpha:]][[:punct:]][[:ascii:]]/ /[a-[:alpha:]]/ /[[:alpha:/ /[[:alpha:]/ /[[:alphaa:]]/ /[[:xdigi:]]/ /[[:xdigit::]]/ /****/ /**\/abc/ abc x/abc xabc /abc\/**/ /abc\/**\/abc/ /**\/*a*b*g*n*t/ abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt /**\/*a*\/**/ xx/xx/xx/xax/xx/xb /**\/*a*/ xx/xx/xx/xax xx/xx/xx/xax/xx /**\/*a*\/**\/*b*/ xx/xx/xx/xax/xx/xb xx/xx/xx/xax/xx/x "**a"convert=glob a c/b/a c/b/aaa "a**/b"convert=glob a/b ab "a/**b"convert=glob a/b ab #pattern convert=glob:glob_no_starstar /***/ /**a**/ #pattern convert=unset #pattern convert=glob:glob_no_wild_separator /*/ /*a*/ /**a**/ /a*b/ /*a*b*/ /??a??/ #pattern convert=unset #pattern convert=glob,convert_glob_escape=0 /a\b\cd/ /**\/a/ /a`*b/convert_glob_escape=` /a`*b/convert_glob_escape=0 /a`*b/convert_glob_escape=x # -------- Tests of extended POSIX conversion -------- #pattern convert=unset:posix_extended /<[[:a[:digit:]b]>/ <[> <:> <9> \= Expect no match /a+\1b\\c|d[ab\c]/ /<[]bc]>/ <]> /<[^]bc]>/ <.> \= Expect no match <]> /(a)\1b/ a1b \= Expect no match aab /(ab)c)d]/ Xabc)d]Y /a***b/ # -------- Tests of basic POSIX conversion -------- #pattern convert=unset:posix_basic /a*b+c\+[def](ab)\(cd\)/ /\(a\)\1b/ aab \= Expect no match a1b /how.to how\.to/ how\nto how.to \= Expect no match how\x{0}to how.to /^how to \^how to/ /^*abc/ /*abc/ X*abcY /**abc/ XabcY X*abcY X**abcY /*ab\(*cd\)/ /^b\(c^d\)\(^e^f\)/ /a***b/ # End of testinput24