1# $FreeBSD: head/bin/sh/tests/expansion/pathname1.0 302937 2016-07-16 13:26:18Z ache $
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