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