1# $FreeBSD$ 2 3unset LC_ALL 4LC_COLLATE=C 5export LC_COLLATE 6 7failures=0 8 9check() { 10 testcase=$1 11 expect=$2 12 eval "set -- $testcase" 13 actual="$*" 14 if [ "$actual" != "$expect" ]; then 15 failures=$((failures+1)) 16 printf '%s\n' "For $testcase, expected $expect actual $actual" 17 fi 18} 19 20set -e 21T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) 22trap 'rm -rf $T' 0 23cd -P $T 24 25mkdir testdir testdir2 'testdir/*' 'testdir/?' testdir/a testdir/b testdir2/b 26mkdir testdir2/.c 27touch testf 'testdir/*/1' 'testdir/?/1' testdir/a/1 testdir/b/1 testdir2/b/.a 28 29check '' '' 30check 'testdir/b' 'testdir/b' 31check 'testdir/c' 'testdir/c' 32check '\*' '*' 33check '\?' '?' 34check '*' 'testdir testdir2 testf' 35check '*""' 'testdir testdir2 testf' 36check '""*' 'testdir testdir2 testf' 37check '*/' 'testdir/ testdir2/' 38check 'testdir*/a' 'testdir/a' 39check 'testdir*/b' 'testdir/b testdir2/b' 40check '*/.c' 'testdir2/.c' 41check 'testdir2/*' 'testdir2/b' 42check 'testdir2/b/*' 'testdir2/b/*' 43check 'testdir/*' 'testdir/* testdir/? testdir/a testdir/b' 44check 'testdir/*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' 45check '"testdir/"*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' 46check 'testdir/\*/*' 'testdir/*/1' 47check 'testdir/\?/*' 'testdir/?/1' 48check 'testdir/"?"/*' 'testdir/?/1' 49check '"testdir"/"?"/*' 'testdir/?/1' 50check '"testdir"/"?"*/*' 'testdir/?/1' 51check '"testdir"/*"?"/*' 'testdir/?/1' 52check '"testdir/?"*/*' 'testdir/?/1' 53check 'testdir/\*/' 'testdir/*/' 54check 'testdir/\?/' 'testdir/?/' 55check 'testdir/"?"/' 'testdir/?/' 56check '"testdir"/"?"/' 'testdir/?/' 57check '"testdir"/"?"*/' 'testdir/?/' 58check '"testdir"/*"?"/' 'testdir/?/' 59check '"testdir/?"*/' 'testdir/?/' 60check 'testdir/[*]/' 'testdir/*/' 61check 'testdir/[?]/' 'testdir/?/' 62check 'testdir/[*?]/' 'testdir/*/ testdir/?/' 63check '[tz]estdir/[*]/' 'testdir/*/' 64 65exit $((failures != 0)) 66