da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This software is part of the ast package #
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 1982-2010 AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and is licensed under the #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Public License, Version 1.0 #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# by AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# A copy of the License is available at #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Information and Software Systems Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Florham Park NJ #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# David Korn <dgk@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainztmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin typeset lineno expected drop arg got sep op val add del
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if [[ $1 == --* ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if [[ $1 == ++* ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then if [[ $del ]]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin then 'err_exit' $lineno "glob -- expected '$expected', got '$got'"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $pattern) got='<match>' ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) got='<nomatch>' ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin then 'err_exit' $lineno "case $subject in $pattern) -- expected '$expected', got '$got'"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzcd $tmp || { err_exit "cd $tmp failed"; exit 1; }
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_glob '</^root:/{s/^[!:]*:[!:]*:\([!:]*\).*$/\1/>' "/^root:/{s/^[!:]*:[!:]*:\([!:]*\).*"'$'"/\1/"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_glob ++Beware '<abd> <abe> <bb> <bcd> <bdir> <ca> <cb> <dd> <de>' [a-y]*[!c]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_glob --Beware '<Beware> <d> <dd> <de>' [!a-c]*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_case '<match>' 'abcdecdhjk' 'a**?**cd**?**??k'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_case '<match>' 'abcdecdhjk' 'a**?**cd**?**??k***'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_case '<match>' 'abcdecdhjk' 'a**?**cd**?**??***k'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_case '<match>' 'abcdecdhjk' 'a**?**cd**?**??***k**'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_case '<match>' 'abcdecdhjk' 'a****c**?**??*****'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_case '<nomatch>' 'abc' '?************c****?****'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif ( set --nocaseglob ) 2>/dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin set --nocaseglob
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin set --nonocaseglob
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif ( set -f ) 2>/dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif ( set --noglob ) 2>/dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin set --noglob
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin set --glob
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_glob '<a-b> <aXb> <abd> <bb> <bcd> <bdir> <ca> <cb> <dd> <man>' *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_glob '<Beware> <abc> <abe> <bdir> <ca> <de> <man>' *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinunset FIGNORE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unset GLOBIGNORE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin GLOBIGNORE=
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset GLOBIGNORE
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction test_sub
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin if [[ "$g" != "$3" ]]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin then 'err_exit' $1 subject="'$subject' $x failed, expected '$3', got '$g'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinset --noglob --nobraceexpand
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//?(e)/#' '#A# #r#g#u#l#a#r# #x#p#r#s#s#i#o#n#s# #t#s#t#'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//*(e)/#' '#A# #r#g#u#l#a#r# #x#p#r#s#s#i#o#n#s# #t#s#t#'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@(e)/[\1]' 'A r[e]gular [e]xpr[e]ssions t[e]st'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@-(e)/[\1]' 'A r[e]gular [e]xpr[e]ssions t[e]st'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//+(e)/[\1]' 'A r[e]gular [e]xpr[e]ssions t[e]st'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//+-(e)/[\1]' 'A r[e]gular [e]xpr[e]ssions t[e]st'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@(+(e))/[\1]' 'A r[e]gular [e]xpr[e]ssions t[e]st'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@(+-(e))/[\1]' 'A r[e]gular [e]xpr[e]ssions t[e]st'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//?(e)/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//{0,1}(e)/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//*(e)/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//{0,}(e)/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@(?(e))/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@({0,1}(e))/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@(*(e))/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@({0,}(e))/[\1]' '[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '/@(?-(e))/[\1]' '[]A regular expressions test'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '/@(!(e))/[\1]' '[A regular expressions test]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintest_sub '//@(!(e))/[\1]' '[A regular expressions test]'