xref: /freebsd/bin/sh/tests/expansion/pathname1.0 (revision 84e51a1b679bececc13cbe3cd3cb9b7d461b9fe7)
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