summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKamil Dudka <kdudka@redhat.com>2008-09-03 10:33:06 +0200
committerJim Meyering <meyering@redhat.com>2008-09-03 15:39:28 +0200
commitea2887bbe4c04e3ff5bae2d532a1e19d3198dfce (patch)
tree08049fea23e45258aa28546097b63b1a7f04c3f4 /tests
parentef6a361a079fbf03950cc405a1ce92c3447563ef (diff)
downloadcoreutils-ea2887bbe4c04e3ff5bae2d532a1e19d3198dfce.tar.xz
df: new option: --total to print grand totals
* src/df.c (add_uint_with_neg_flag): New function to add two integral values with separate negation flag. (show_dev): New parameter force_fsu to display numbers directly. Collect summary statistics on each printed device. (usage): Mention new option --total in --help. (main): Initialize summary on program start. Handle new option --total. * tests/df/total: Dummy test case for new --total option. * tests/df/total-awk: Better test case for new --total option (requires awk). * doc/coreutils.texi: Mention new parameter --total. * NEWS: Mention the change. * TODO: Removed completed task.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/check.mk1
-rwxr-xr-xtests/df/total42
-rwxr-xr-xtests/df/total-awk78
4 files changed, 123 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5a57ca993..59d1e489c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -284,6 +284,8 @@ TESTS = \
dd/skip-seek \
dd/skip-seek2 \
dd/unblock-sync \
+ df/total \
+ df/total-awk \
du/2g \
du/8gb \
du/basic \
diff --git a/tests/check.mk b/tests/check.mk
index 4fca28352..03b89dc3f 100644
--- a/tests/check.mk
+++ b/tests/check.mk
@@ -79,6 +79,7 @@ TESTS_ENVIRONMENT = \
top_srcdir='$(top_srcdir)' \
CONFIG_HEADER='$(abs_top_builddir)/lib/config.h' \
CU_TEST_NAME=`basename '$(abs_srcdir)'`,$$tst \
+ AWK='$(AWK)' \
EGREP='$(EGREP)' \
EXEEXT='$(EXEEXT)' \
MAKE=$(MAKE) \
diff --git a/tests/df/total b/tests/df/total
new file mode 100755
index 000000000..186bf8de3
--- /dev/null
+++ b/tests/df/total
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Ensure "df --total" produces /^total.../ line
+
+# Copyright (C) 2008 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/test-lib.sh
+
+fail=0
+
+# Don't let a different umask perturb the results.
+umask 22
+
+RE_TOTAL='^total( +(-?[0-9]+|-)){3} +-?[0-9]+%$'
+
+df > tmp || fail=1
+$EGREP "$RE_TOTAL" tmp && fail=1
+
+df -i > tmp || fail=1
+$EGREP "$RE_TOTAL" tmp && fail=1
+
+df --total | $EGREP "$RE_TOTAL" || fail=1
+df -i --total | $EGREP "$RE_TOTAL" || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/df/total-awk b/tests/df/total-awk
new file mode 100755
index 000000000..632e945a7
--- /dev/null
+++ b/tests/df/total-awk
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Ensure "df --total" computes well summary statistics
+
+# Copyright (C) 2008 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/test-lib.sh
+
+fail=0
+
+# Don't let a different umask perturb the results.
+umask 22
+
+echo '
+BEGIN {
+ total = 0
+ used = 0
+ available = 0
+}
+{
+ if (NR==1 || $0==$1 || $0~/^total +(-?[0-9]+|-) +(-?[0-9]+|-) +(-?[0-9]+|-) +-?[0-9]+%$/)
+ next
+ if ($1~/^[0-9]/)
+ {
+ total += $1
+ used += $2
+ available += $3
+ }
+ else
+ {
+ total += $2
+ used += $3
+ available += $4
+ }
+}
+END {
+ print total
+ print used
+ print available
+}
+' > compute_sum.awk || fail=1
+
+echo '
+/^total +(-?[0-9]+|-) +(-?[0-9]+|-) +(-?[0-9]+|-) +-?[0-9]+%$/ {
+ print $2;
+ print $3;
+ print $4
+}
+' > parse_total.awk || fail=1
+
+df --total > tmp || fail=1
+$AWK -f compute_sum.awk tmp > out1 || fail=1
+$AWK -f parse_total.awk tmp > out2 || fail=1
+compare out1 out2 || fail=1
+
+df -i --total > tmp || fail=1
+$AWK -f compute_sum.awk tmp > out1 || fail=1
+$AWK -f parse_total.awk tmp > out2 || fail=1
+compare out1 out2 || fail=1
+
+(exit $fail); exit $fail