]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - bin/sh/tests/expansion/pathname1.0
MFV r362143:
[FreeBSD/FreeBSD.git] / bin / sh / tests / expansion / pathname1.0
1 # $FreeBSD$
2
3 unset LC_ALL
4 LC_COLLATE=C
5 export LC_COLLATE
6
7 failures=0
8
9 check() {
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
20 set -e
21 T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX)
22 trap 'rm -rf $T' 0
23 cd -P $T
24
25 mkdir testdir testdir2 'testdir/*' 'testdir/?' testdir/a testdir/b testdir2/b
26 mkdir testdir2/.c
27 touch testf 'testdir/*/1' 'testdir/?/1' testdir/a/1 testdir/b/1 testdir2/b/.a
28
29 check '' ''
30 check 'testdir/b' 'testdir/b'
31 check 'testdir/c' 'testdir/c'
32 check '\*' '*'
33 check '\?' '?'
34 check '*' 'testdir testdir2 testf'
35 check '*""' 'testdir testdir2 testf'
36 check '""*' 'testdir testdir2 testf'
37 check '*/' 'testdir/ testdir2/'
38 check 'testdir*/a' 'testdir/a'
39 check 'testdir*/b' 'testdir/b testdir2/b'
40 check '*/.c' 'testdir2/.c'
41 check 'testdir2/*' 'testdir2/b'
42 check 'testdir2/b/*' 'testdir2/b/*'
43 check 'testdir/*' 'testdir/* testdir/? testdir/a testdir/b'
44 check 'testdir/*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1'
45 check '"testdir/"*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1'
46 check 'testdir/\*/*' 'testdir/*/1'
47 check 'testdir/\?/*' 'testdir/?/1'
48 check 'testdir/"?"/*' 'testdir/?/1'
49 check '"testdir"/"?"/*' 'testdir/?/1'
50 check '"testdir"/"?"*/*' 'testdir/?/1'
51 check '"testdir"/*"?"/*' 'testdir/?/1'
52 check '"testdir/?"*/*' 'testdir/?/1'
53 check 'testdir/\*/' 'testdir/*/'
54 check 'testdir/\?/' 'testdir/?/'
55 check 'testdir/"?"/' 'testdir/?/'
56 check '"testdir"/"?"/' 'testdir/?/'
57 check '"testdir"/"?"*/' 'testdir/?/'
58 check '"testdir"/*"?"/' 'testdir/?/'
59 check '"testdir/?"*/' 'testdir/?/'
60 check 'testdir/[*]/' 'testdir/*/'
61 check 'testdir/[?]/' 'testdir/?/'
62 check 'testdir/[*?]/' 'testdir/*/ testdir/?/'
63 check '[tz]estdir/[*]/' 'testdir/*/'
64
65 exit $((failures != 0))