]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: split: provide more isolated /tmp handling
authorPádraig Brady <P@draigBrady.com>
Tue, 18 Jul 2023 11:40:57 +0000 (12:40 +0100)
committerPádraig Brady <P@draigBrady.com>
Tue, 18 Jul 2023 22:11:24 +0000 (23:11 +0100)
* tests/split/l-chunk.sh: Move the "expensive" portion to ...
* tests/split/l-chunk-root.sh: .. A new test split from l-chunk.sh
which uses an isolated TMPDIR, rather than exhausting /tmp,
as that gives false positive failures with some other coreutils tests
like tac-2-nonseekable.sh and shuf-reservoir.sh at least.
* tests/local.mk: Reference the new test.

tests/local.mk
tests/split/l-chunk-root.sh [new file with mode: 0755]
tests/split/l-chunk.sh

index f35728229ebd141498d9fdbe4e23a0464eab4e95..a7088afbc74b51030be63b7cc1877cd9d1152c83 100644 (file)
@@ -137,6 +137,7 @@ all_root_tests =                            \
   tests/rm/one-file-system.sh                  \
   tests/rm/read-only.sh                                \
   tests/rm/empty-immutable-skip.sh             \
+  tests/split/l-chunk-root.sh                  \
   tests/tail/append-only.sh                    \
   tests/tail/end-of-device.sh                  \
   tests/touch/now-owned-by-other.sh
diff --git a/tests/split/l-chunk-root.sh b/tests/split/l-chunk-root.sh
new file mode 100755 (executable)
index 0000000..352b3d2
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# test splitting into newline delineated chunks from infinite imput
+
+# Copyright (C) 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_ split
+require_root_
+
+cwd=$(pwd)
+cleanup_() { cd /; umount "$cwd/mnt"; }
+
+# Create a file system to provide an isolated $TMPDIR
+dd if=/dev/zero of=blob bs=8192 count=200 &&
+mkdir mnt                                 &&
+mkfs -t ext2 -F blob                      &&
+mount -oloop blob mnt                     ||
+  skip_ "insufficient mount/ext2 support"
+export TMPDIR="$cwd/mnt"
+
+# 'split' should fail eventially when
+# creating an infinitely long output file.
+
+returns_ 1 split -n l/2 /dev/zero || fail=1
+rm x??
+
+# Repeat the above,  but with 1/2, not l/2:
+returns_ 1 split -n 1/2 /dev/zero || fail=1
+rm x??
+
+Exit $fail
index bc9ad122ccf52f46f4052497ae0673bb6dbac0a5..23c787871238023ed23946e81085ce3672c72e8e 100755 (executable)
@@ -35,18 +35,6 @@ split -n l/10 /dev/null || fail=1
 test "$(stat -c %s x* | uniq -c | sed 's/^ *//; s/ /x/')" = "10x0" || fail=1
 rm x??
 
-# 'split' should reject any attempt to create an infinitely
-# long output file.
-# This test is very expensive as it runs out of /tmp space.
-if test "${RUN_VERY_EXPENSIVE_TESTS+set}" = set; then
-  returns_ 1 split -n l/2 /dev/zero || fail=1
-  rm x??
-
-  # Repeat the above,  but with 1/2, not l/2:
-  returns_ 1 split -n 1/2 /dev/zero || fail=1
-  rm x??
-fi
-
 # Ensure --elide-empty-files is honored
 split -e -n l/10 /dev/null || fail=1
 returns_ 1 stat x?? 2>/dev/null || fail=1