de24ba19b42457555dcdeef7d11c60e7e8b0a32f
[platform/upstream/coreutils.git] / tests / du / exclude
1 #!/bin/sh
2 # make sure du's --exclude option works
3
4 if test "$VERBOSE" = yes; then
5   set -x
6   du --version
7 fi
8
9 . $srcdir/../envvar-check
10
11 pwd=`pwd`
12 t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
13 trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0
14 trap '(exit $?); exit $?' 1 2 13 15
15
16 framework_failure=0
17 mkdir -p $tmp || framework_failure=1
18 cd $tmp || framework_failure=1
19 mkdir -p a/b/c a/x/y a/u/v
20
21 if test $framework_failure = 1; then
22   echo "$0: failure in testing framework" 1>&2
23   (exit 1); exit 1
24 fi
25
26 fail=0
27
28 du --exclude=x a | sed 's/^[0-9][0-9]*  //' | sort > out || fail=1
29 printf '===\n' >> out
30 printf 'b\n' > excl
31 du --exclude-from=excl a | sed 's/^[0-9][0-9]*  //' | sort >> out || fail=1
32 printf '===\n' >> out
33 # Make sure that we can exclude an entire hierarchy.
34 du --exclude=a a >> out || fail=1
35 # Make sure that we can exclude based on more than one component.
36 # Before coreutils-5.3.0, this part would fail.
37 printf '===\n' >> out
38 du --exclude=a/u --exclude=a/b a \
39   | sed 's/^[0-9][0-9]* //' | sort >> out || fail=1
40 cat <<\EOF > exp
41 a
42 a/b
43 a/b/c
44 a/u
45 a/u/v
46 ===
47 a
48 a/u
49 a/u/v
50 a/x
51 a/x/y
52 ===
53 ===
54 a
55 a/x
56 a/x/y
57 EOF
58
59 cmp out exp || fail=1
60 test $fail = 1 && diff out exp 2> /dev/null
61
62 (exit $fail); exit $fail