1 2unset LC_ALL 3LC_COLLATE=C 4export LC_COLLATE 5 6failures=0 7 8check() { 9 testcase=$1 10 expect=$2 11 eval "set -- $testcase" 12 actual="$*" 13 if [ "$actual" != "$expect" ]; then 14 failures=$((failures+1)) 15 printf '%s\n' "For $testcase, expected $expect actual $actual" 16 fi 17} 18 19set -e 20T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) 21trap 'rm -rf $T' 0 22cd -P $T 23 24mkdir testdir testdir2 'testdir/*' 'testdir/?' testdir/a testdir/b testdir2/b 25mkdir testdir2/.c 26touch testf 'testdir/*/1' 'testdir/?/1' testdir/a/1 testdir/b/1 testdir2/b/.a 27 28check '*\/' 'testdir/ testdir2/' 29check '"testdir/"*"/1"' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' 30check '"testdir/"*"/"*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' 31check '"testdir/"*\/*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' 32check '"testdir"*"/"*"/"*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' 33 34exit $((failures != 0)) 35