1: X/Open glob tests 2013-11-25 2 3# test workspace 4 5Wtestglob.tmp 6W 01 7W ab 8W ?(.|a)z 9W . 10W .cd 11W cd 12W hb.h 13W pp 14W .p.h 15W p.h 16W qq 17W .q.h 18W q.h 19W rr 20W .r.h 21W r.h 22W cd 23W ab?(cd| 24W cd) 25W abcd 26W a[b 27W c]d 28W c[d 29W c[d( 30W c[dx 31W ha.h 32W xxx 33W TT* 34W TTfoo 35 36# top level basics 37 38S ab OK ab 39S a* OK a[b ab ab?(cd| abcd 40S TT* OK TT* TTfoo 41S s\\* NOMATCH 42Sn s\\* OK s\\* 43S s\\\\* NOMATCH 44Sn s\\\\* OK s\\\\* 45 46# subdir level basics 47 48S */ OK a[b/ ab/ ab?(cd|/ 49Sn */ OK a[b/ ab/ ab?(cd|/ 50S */cd OK ab/cd 51Sn */cd OK ab/cd 52S */?? OK ab/cd ab/pp 53Sn */?? OK ab/cd ab/pp 54S */xx NOMATCH 55Sn */xx OK */xx 56S s/\\/0* NOMATCH 57Sn s/\\/0* OK s/\\/0* 58S s/\\\\/0* NOMATCH 59Sn s/\\\\/0* OK s/\\\\/0* 60S \\\\*?/\\\\*? NOMATCH 61Sn \\\\*?/\\\\*? OK \\\\*?/\\\\*? 62S \\\\*/\\\\*? NOMATCH 63Sn \\\\*/\\\\*? OK \\\\*/\\\\*? 64S \\\\*?/\\\\* NOMATCH 65Sn \\\\*?/\\\\* OK \\\\*?/\\\\* 66 67S s/\\(\\<3d\\>\\)/\\\\h'0*1'\\1\\\\h'0'/ NOMATCH 68Sn s/\\(\\<3d\\>\\)/\\\\h'0*1'\\1\\\\h'0'/ OK s/\\(\\<3d\\>\\)/\\\\h'0*1'\\1\\\\h'0'/ 69 70# malformed patterns 71 72S c[d OK c[d 73Sn c[d OK c[d 74S c[d? NOMATCH 75Sn c[d? OK c[d? 76S c[dx OK c[dx 77S (x NOMATCH 78S (x/* NOMATCH 79Sn (x OK (x 80Sn (x/* OK (x/* 81Sns (x OK (x 82Sns (x/* OK (x/* 83 84# embedded / 85 86S ab/cd OK ab/cd 87S ab/xx NOMATCH 88S ab[/]cd NOMATCH 89 90# X/Open 91 92S a[b/c]d OK a[b/c]d 93Sn a[b/c]d OK a[b/c]d 94 95# augmented sh patterns 96 97K a?(b) OK ab 98K ab?(cd|/cd) OK ab?(cd|/cd) 99K ab/?(.|a)* OK ab/. ab/.. ab/.cd ab/?(.|a)z ab/cd ab/hb.h ab/pp 100K ab/[.a]* NOMATCH 101K ab/.* OK ab/. ab/.. ab/.cd 102K c[d( OK c[d( 103K *(x) OK xxx 104K +(x) OK xxx 105K ?(x)xx OK xxx 106K ?(x)xxx OK xxx 107K (x NOMATCH 108K (x/* NOMATCH 109Kn (x OK (x 110Kn (x/* OK (x/* 111Kns (x OK (x 112Kns (x/* OK (x/* 113K \(x NOMATCH 114K \(x/* NOMATCH 115Kn \(x OK \(x 116Kn \(x/* OK \(x/* 117Kns \(x OK \(x 118Kns \(x/* OK \(x/* 119K %x/* NOMATCH 120Kn %x OK %x 121Kn %x/* OK %x/* 122Kns %x OK %x 123Kns %x/* OK %x/* 124K \%x NOMATCH 125K \%x/* NOMATCH 126Kn \%x OK \%x 127Kn \%x/* OK \%x/* 128Kns \%x OK \%x 129Kns \%x/* OK \%x/* 130Kns ./*/$x\) OK ./*/$x\) 131Kns ./*-/$x\) OK ./*-/$x\) 132 133K ab/@(+(.|?)&!(.|..)) OK ab/.cd ab/?(.|a)z ab/cd ab/hb.h ab/pp 134 135# ~(N) GLOB_NOMATCH prefix as if set by sh(1) 136 137K /dev/null OK /dev/null 138K /dev/null* OK /dev/null 139Kn /dev/null OK /dev/null 140Kn /dev/null* OK /dev/null 141 142Ki AB OK ab 143Ki AB*(CD) OK ab abcd 144Ki AZ NOMATCH AZ 145K ~(i)AB OK ab 146K ~(i)AB*(CD) OK ab abcd 147K ~(i)AZ NOMATCH ~(i)ab 148 149K /~(i)dev/null OK /dev/null 150K /~(i)dev/null* OK /dev/null 151K /~(N)dev/null OK /dev/null 152K /~(N)dev/null* OK /dev/null 153K ~(i)/dev/null OK /dev/null 154K ~(i)/dev/null* OK /dev/null 155K ~(N)/dev/null OK /dev/null 156K ~(N)/dev/null* OK /dev/null 157 158K ab OK ab 159K ab* OK ab ab?(cd| abcd 160K az NOMATCH 161K az* NOMATCH 162 163K ~(N)ab OK ab 164K ~(N)ab* OK ab ab?(cd| abcd 165K ~(N)az NOMATCH 166K ~(N)az* NOMATCH 167 168# ~(N) GLOB_NOMATCH prefix as if ignored by sh(1) 169 170Kn ab OK ab 171Kn ab* OK ab ab?(cd| abcd 172Kn az OK az 173Kn az* OK az* 174 175Kn ~(i)AZ OK ~(i)AZ 176 177Kn ~(N)ab OK ab 178Kn ~(N)ab* OK ab ab?(cd| abcd 179Kn ~(N)az NOMATCH 180Kn ~(N)az* NOMATCH 181 182# augmented sh patterns with gl_extra 183 184Kx a?(b) OK ab 185Kx ab?(cd|/cd) OK ab?(cd|/cd) 186Kx ab/?(.|a)* OK ab/. ab/.. ab/.cd ab/?(.|a)z ab/cd ab/hb.h ab/pp 187Kx ab/[.a]* NOMATCH 188Kx ab/.* OK ab/. ab/.. ab/.cd 189Kx c[d( OK c[d( 190Kx *(x) OK xxx 191Kx +(x) OK xxx 192Kx ?(x)xx OK xxx 193Kx ?(x)xxx OK xxx 194Kx (x NOMATCH 195Kx (x/* NOMATCH 196Kxn (x OK (x 197Kxn (x/* OK (x/* 198Kxns (x OK (x 199Kxns (x/* OK (x/* 200Kx \(x NOMATCH 201Kx \(x/* NOMATCH 202Kxn \(x OK \(x 203Kxn \(x/* OK \(x/* 204Kxns \(x OK \(x 205Kxns \(x/* OK \(x/* 206Kx %x/* NOMATCH 207Kxn %x OK %x 208Kxn %x/* OK %x/* 209Kxns %x OK %x 210Kxns %x/* OK %x/* 211Kx \%x NOMATCH 212Kx \%x/* NOMATCH 213Kxn \%x OK \%x 214Kxn \%x/* OK \%x/* 215Kxns \%x OK \%x 216Kxns \%x/* OK \%x/* 217Kxns ./*/$x\) OK ./*/$x\) 218Kxns ./*-/$x\) OK ./*-/$x\) 219 220# GLOB_STARSTAR 221 222Sr * OK TT* TTfoo a[b ab ab?(cd| abcd c[d c[d( c[dx cd ha.h xxx 223Sr ** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 224Sr */* OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab?(cd|/cd) 225Sr */** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 226Sr **/* OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 227Sr **/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 228Sr */*/* OK ab/pp/p.h ab/pp/qq ab/pp/rr 229Sr */*/** OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd|/cd) 230Sr */**/* OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd|/cd) 231Sr */**/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 232Sr **/*/* OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd|/cd) 233Sr **/*/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 234Sr **/**/* OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 235Sr **/**/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 236 237Sr */ OK a[b/ ab/ ab?(cd|/ 238Sr **/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 239Sr */*/ OK ab/?(.|a)z/ ab/pp/ 240Sr */**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 241Sr **/*/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 242Sr **/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 243Sr */*/*/ OK ab/pp/qq/ ab/pp/rr/ 244Sr */*/**/ OK ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ 245Sr */**/*/ OK ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ 246Sr */**/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 247Sr **/*/*/ OK ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ 248Sr **/*/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 249Sr **/**/*/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 250Sr **/**/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 251 252Sr *.h OK ha.h 253Sr */*.h OK ab/hb.h 254Sr **/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h ha.h 255Sr */*/*.h OK ab/pp/p.h 256Sr */**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 257Sr **/*/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 258Sr **/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h ha.h 259Sr */*/*/*.h OK ab/pp/qq/q.h ab/pp/rr/r.h 260Sr */*/**/*.h OK ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 261Sr */**/*/*.h OK ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 262Sr */**/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 263Sr **/*/*/*.h OK ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 264Sr **/*/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 265Sr **/**/*/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 266Sr **/**/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h ha.h 267 268S ~(O)* OK TT* TTfoo a[b ab ab?(cd| abcd c[d c[d( c[dx cd ha.h xxx 269S ~(O)** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 270S ~(O)*/* OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab?(cd|/cd) 271S ~(O)*/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 272S ~(O)**/* OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 273S ~(O)**/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 274S ~(O)*/*/* OK ab/pp/p.h ab/pp/qq ab/pp/rr 275S ~(O)*/*/** OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd|/cd) 276S ~(O)*/**/* OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd|/cd) 277S ~(O)*/**/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 278S ~(O)**/*/* OK a[b/c]d ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd|/cd) 279#S ~(O)**/*/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 280S ~(O)**/**/* OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 281S ~(O)**/**/** OK TT* TTfoo a[b a[b/c]d ab ab/?(.|a)z ab/cd ab/hb.h ab/pp ab/pp/p.h ab/pp/qq ab/pp/qq/q.h ab/pp/rr ab/pp/rr/r.h ab?(cd| ab?(cd|/cd) abcd c[d c[d( c[dx cd ha.h xxx 282 283S ~(O)*/ OK a[b/ ab/ ab?(cd|/ 284S ~(O)**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 285S ~(O)*/*/ OK ab/?(.|a)z/ ab/pp/ 286S ~(O)*/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 287S ~(O)**/*/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 288S ~(O)**/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 289S ~(O)*/*/*/ OK ab/pp/qq/ ab/pp/rr/ 290S ~(O)*/*/**/ OK ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ 291S ~(O)*/**/*/ OK ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ 292S ~(O)*/**/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 293S ~(O)**/*/*/ OK ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ 294#S ~(O)**/*/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 295S ~(O)**/**/*/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 296S ~(O)**/**/**/ OK a[b/ ab/ ab/?(.|a)z/ ab/pp/ ab/pp/qq/ ab/pp/rr/ ab?(cd|/ 297 298S ~(O)*.h OK ha.h 299S ~(O)*/*.h OK ab/hb.h 300S ~(O)**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h ha.h 301S ~(O)*/*/*.h OK ab/pp/p.h 302S ~(O)*/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 303S ~(O)**/*/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 304S ~(O)**/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h ha.h 305S ~(O)*/*/*/*.h OK ab/pp/qq/q.h ab/pp/rr/r.h 306S ~(O)*/*/**/*.h OK ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 307S ~(O)*/**/*/*.h OK ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 308S ~(O)*/**/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 309S ~(O)**/*/*/*.h OK ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 310#S ~(O)**/*/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 311S ~(O)**/**/*/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h 312S ~(O)**/**/**/*.h OK ab/hb.h ab/pp/p.h ab/pp/qq/q.h ab/pp/rr/r.h ha.h 313 314W 02 315W dir 316W file 317W link dir 318W loop 319W back ../.. 320 321S * OK dir link loop 322S */* OK dir/file link/file loop/back 323Sr * OK dir link loop 324Sr */* OK dir/file link/file loop/back 325Sr ** OK dir dir/file link loop loop/back 326