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