aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2023-03-04 16:51:11 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2023-03-04 16:57:16 -0800
commit110bcd28386b1f47a4cd876098acb708fdcbbb25 (patch)
tree8ed76d8b3e55d094e37a9ccb5d5c386d44abe3df /tests
parentsplit: tune for when creating output files (diff)
downloadcoreutils-110bcd28386b1f47a4cd876098acb708fdcbbb25.tar.gz
coreutils-110bcd28386b1f47a4cd876098acb708fdcbbb25.zip
du: --apparent counts only symlinks and regular
Problem reported by Christoph Anton Mitterer (Bug#61884). * src/du.c (process_file): When counting apparent sizes, count only usable st_size members. * tests/du/apparent.sh: New file. * tests/local.mk (all_root_tests): Add it.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/du/apparent.sh33
-rw-r--r--tests/local.mk1
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/du/apparent.sh b/tests/du/apparent.sh
new file mode 100755
index 000000000..dba3031d4
--- /dev/null
+++ b/tests/du/apparent.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Exercise du's --apparent-size option.
+
+# Copyright 2023 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 <https://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+print_ver_ du
+
+mkdir -p d || framework_failure_
+for f in $(seq 100); do
+ echo foo >d/$f || framework_failure_
+done
+
+du -b d/* >separate || fail=1
+du -b d >together || fail=1
+separate_sum=$($AWK '{sum+=$1}END{print sum}' separate) || framework_failure_
+together_sum=$($AWK '{sum+=$1}END{print sum}' together) || framework_failure_
+test $separate_sum -eq $together_sum || fail=1
+
+Exit $fail
diff --git a/tests/local.mk b/tests/local.mk
index c8db95e99..1fe04235d 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -118,6 +118,7 @@ all_root_tests = \
tests/dd/skip-seek-past-dev.sh \
tests/df/problematic-chars.sh \
tests/df/over-mount-device.sh \
+ tests/du/apparent.sh \
tests/du/bind-mount-dir-cycle.sh \
tests/du/bind-mount-dir-cycle-v2.sh \
tests/id/setgid.sh \