xref: /freebsd/bin/sh/tests/expansion/pathname1.0 (revision 22cf89c938886d14f5796fc49f9f020c23ea8eaf)
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 '' ''
29check 'testdir/b' 'testdir/b'
30check 'testdir/c' 'testdir/c'
31check '\*' '*'
32check '\?' '?'
33check '*' 'testdir testdir2 testf'
34check '*""' 'testdir testdir2 testf'
35check '""*' 'testdir testdir2 testf'
36check '*/' 'testdir/ testdir2/'
37check 'testdir*/a' 'testdir/a'
38check 'testdir*/b' 'testdir/b testdir2/b'
39check '*/.c' 'testdir2/.c'
40check 'testdir2/*' 'testdir2/b'
41check 'testdir2/b/*' 'testdir2/b/*'
42check 'testdir/*' 'testdir/* testdir/? testdir/a testdir/b'
43check 'testdir/*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1'
44check '"testdir/"*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1'
45check 'testdir/\*/*' 'testdir/*/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/*/'
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/*/ testdir/?/'
62check '[tz]estdir/[*]/' 'testdir/*/'
63
64exit $((failures != 0))
65