1#!/bin/bash
2
3# Copyright (C) 2003-2023 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 <https://www.gnu.org/licenses/>.
17
18cat - <<\EOF > /dev/null
19Invoke e.g., like this
20VG_PATH_PREFIX=/cu/src/vg: DU1=/cu/src/du DU2=/usr/bin/du ./du-tests
21Where /cu/src/vg/du is a valgrind wrapper around du,
22and DU1 refers to the just-built du binary you want to test.
23EOF
24
25test -z "$DU1" && { echo DU1 envvar not set 1>&2; exit 1; }
26test -z "$DU2" && { echo DU2 envvar not set 1>&2; exit 1; }
27
28test -x "$DU1" || { echo $DU1 not executable 1>&2; exit 1; }
29test -x "$DU2" || { echo $DU2 not executable 1>&2; exit 1; }
30
31# Expects $DU1 and $DU2 to be the binaries to compare.
32d1=$(mktemp -d)
33cp -a $DU1 $d1/du
34d2=$(mktemp -d)
35cp -a $DU2 $d2/du
36
37for 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)
56done
57rm -rf $d1 $d2
58