TODO: add an item for a chmod optimization
[platform/upstream/coreutils.git] / src / du-tests
1 #!/bin/bash
2
3 # Copyright (C) 2003, 2006 Free Software Foundation, Inc.
4
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14
15 # You should have received a copy of the GNU General Public License
16 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18 cat - <<\EOF > /dev/null
19 Invoke e.g., like this
20 VG_PATH_PREFIX=/cu/src/vg: DU1=/cu/src/du DU2=/usr/bin/du ./du-tests
21 Where /cu/src/vg/du is a valgrind wrapper around du,
22 and DU1 refers to the just-built du binary you want to test.
23 EOF
24
25 test -z "$DU1" && { echo DU1 envvar not set 1>&2; exit 1; }
26 test -z "$DU2" && { echo DU2 envvar not set 1>&2; exit 1; }
27
28 test -x "$DU1" || { echo $DU1 not executable 1>&2; exit 1; }
29 test -x "$DU2" || { echo $DU2 not executable 1>&2; exit 1; }
30
31 # Expects $DU1 and $DU2 to be the binaries to compare.
32 d1=$(mktemp -d)
33 cp -a $DU1 $d1/du
34 d2=$(mktemp -d)
35 cp -a $DU2 $d2/du
36
37 for args in  \
38     '-Sa .' \
39     '-Sa ../..' \
40     '-Sa a' \
41     '-Sa /tmp /t' \
42     '-Sa /tmp' \
43     '/tmp /t' \
44     '-a /tmp /t' \
45     '-a a' \
46     '-ca .' \
47     '-ca ..' \
48     '-ca ../..' \
49     '-ca /tmp /t' \
50     '-ca /tmp' \
51     '-ca a' \
52   ; do
53   echo Args: $args ======================
54   diff -u --label=$DU1 --label=$DU2 \
55     <(PATH=$VG_PATH_PREFIX$d1 du $args 2>&1) <(PATH=$d2 du $args 2>&1)
56 done
57 rm -rf $d1 $d2