diff --git a/cfg.mk b/cfg.mk index 6fa7b1f72..6703dfe33 100644 --- a/cfg.mk +++ b/cfg.mk @@ -408,6 +408,13 @@ sc_some_programs_must_avoid_exit_failure: && { echo '$(ME): do not use EXIT_FAILURE in the above' \ 1>&2; exit 1; } || : +# Ensure that tests call the require_ulimit_v_ function if using ulimit -v +sc_prohibit_test_ulimit_without_require_: + @(git grep -l require_ulimit_v_ tests; \ + git grep -l 'ulimit -v' tests) \ + | sort | uniq -u | grep . && { echo "$(ME): the above test(s)"\ + " should match require_ulimit_v_ with ulimit -v" 1>&2; exit 1; } || : + # Ensure that tests call the print_ver_ function for programs which are # actually used in that test. sc_prohibit_test_calls_print_ver_with_irrelevant_argument: diff --git a/init.cfg b/init.cfg index 33122cc69..c48607c93 100644 --- a/init.cfg +++ b/init.cfg @@ -112,7 +112,7 @@ require_openat_support_() fi } -require_ulimit_() +require_ulimit_v_() { local ulimit_works=yes # Expect to be able to exec a program in 10MiB of virtual memory, diff --git a/tests/cp/link-heap.sh b/tests/cp/link-heap.sh index 62d7de000..7de78131d 100755 --- a/tests/cp/link-heap.sh +++ b/tests/cp/link-heap.sh @@ -19,7 +19,7 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ cp expensive_ -require_ulimit_ +require_ulimit_v_ a=$(printf %031d 0) b=$(printf %031d 1) diff --git a/tests/dd/no-allocate.sh b/tests/dd/no-allocate.sh index e45dd5cf9..dd1a7408b 100755 --- a/tests/dd/no-allocate.sh +++ b/tests/dd/no-allocate.sh @@ -18,7 +18,7 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ dd -require_ulimit_ +require_ulimit_v_ # count and skip is zero, we don't need to allocate memory (ulimit -v 20000; dd bs=30M count=0) || fail=1 diff --git a/tests/misc/csplit-heap.sh b/tests/misc/csplit-heap.sh index 82945a78d..3c300cec4 100755 --- a/tests/misc/csplit-heap.sh +++ b/tests/misc/csplit-heap.sh @@ -19,7 +19,7 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ csplit -require_ulimit_ +require_ulimit_v_ ( ulimit -v 20000 diff --git a/tests/misc/cut-huge-to-eol-range.sh b/tests/misc/cut-huge-to-eol-range.sh index 42cecfd79..e6abe6ec5 100755 --- a/tests/misc/cut-huge-to-eol-range.sh +++ b/tests/misc/cut-huge-to-eol-range.sh @@ -18,7 +18,7 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ cut -require_ulimit_ +require_ulimit_v_ getlimits_ # From coreutils-8.10 through 8.20, this would make cut try to allocate diff --git a/tests/misc/head-c.sh b/tests/misc/head-c.sh index eada8d550..37a86cea8 100755 --- a/tests/misc/head-c.sh +++ b/tests/misc/head-c.sh @@ -18,6 +18,7 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ head +require_ulimit_v_ # exercise the fix of 2001-08-18, based on test case from Ian Bruce echo abc > in || framework_failure_ diff --git a/tests/misc/printf-surprise.sh b/tests/misc/printf-surprise.sh index 0db6f7b1a..ccd5990f6 100755 --- a/tests/misc/printf-surprise.sh +++ b/tests/misc/printf-surprise.sh @@ -20,8 +20,7 @@ prog=printf . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ printf - -require_ulimit_ +require_ulimit_v_ # Up to coreutils-6.9, "printf %.Nf 0" would encounter an ENOMEM internal diff --git a/tests/misc/sort-merge-fdlimit.sh b/tests/misc/sort-merge-fdlimit.sh index bcd023ae0..2125f852f 100755 --- a/tests/misc/sort-merge-fdlimit.sh +++ b/tests/misc/sort-merge-fdlimit.sh @@ -19,7 +19,6 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ sort -require_ulimit_ mkdir in err || framework_failure_ diff --git a/tests/rm/many-dir-entries-vs-OOM.sh b/tests/rm/many-dir-entries-vs-OOM.sh index c867a46e1..a6ecdf67a 100755 --- a/tests/rm/many-dir-entries-vs-OOM.sh +++ b/tests/rm/many-dir-entries-vs-OOM.sh @@ -19,6 +19,7 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ rm du chmod +require_ulimit_v_ expensive_ diff --git a/tests/split/r-chunk.sh b/tests/split/r-chunk.sh index f4c4fd225..9c5b86ed4 100755 --- a/tests/split/r-chunk.sh +++ b/tests/split/r-chunk.sh @@ -19,8 +19,6 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ split -require_ulimit_ - # N can be greater than the file size # in which case no data is extracted, or empty files are written split -n r/10 /dev/null || fail=1