From: Pádraig Brady Date: Tue, 18 Jul 2023 11:40:57 +0000 (+0100) Subject: tests: split: provide more isolated /tmp handling X-Git-Tag: v9.4~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8fd50b86729a7f848c25b62086fcaf5332b5c2f0;p=thirdparty%2Fcoreutils.git tests: split: provide more isolated /tmp handling * 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. --- diff --git a/tests/local.mk b/tests/local.mk index f35728229e..a7088afbc7 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -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 index 0000000000..352b3d28aa --- /dev/null +++ b/tests/split/l-chunk-root.sh @@ -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 . + +. "${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 diff --git a/tests/split/l-chunk.sh b/tests/split/l-chunk.sh index bc9ad122cc..23c7878712 100755 --- a/tests/split/l-chunk.sh +++ b/tests/split/l-chunk.sh @@ -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