aboutsummaryrefslogtreecommitdiffstats
path: root/tests/misc/timeout-large-parameters.sh
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2020-03-01 22:28:29 +0000
committerPádraig Brady <P@draigBrady.com>2020-03-01 23:36:05 +0000
commitf2034aa9bbffa766c8824d07c234ddb39620f853 (patch)
treedb93c4c3c93b93b5e93c594e63545cc3578500eb /tests/misc/timeout-large-parameters.sh
parenttests: avoid a hang on GNU/Hurd from 2019 (diff)
downloadcoreutils-f2034aa9bbffa766c8824d07c234ddb39620f853.tar.gz
coreutils-f2034aa9bbffa766c8824d07c234ddb39620f853.zip
tests: avoid a false failure on OpenIndiana 11
* tests/misc/timeout-parameters.sh: Split the large timeout handling to ... * tests/misc/timeout-large-parameters.sh: ... here, so that the 3 second delay is contained in its own test, and if the test is skipped due invalid handling within timeout(1), it will be more apparent. Also adjust the check so we skip whenever the kernel timer fires immediately, to handle the buggy OpenIndiana 11 kernel also. Reported by Bruno Haible.
Diffstat (limited to 'tests/misc/timeout-large-parameters.sh')
-rwxr-xr-xtests/misc/timeout-large-parameters.sh46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/misc/timeout-large-parameters.sh b/tests/misc/timeout-large-parameters.sh
new file mode 100755
index 000000000..3445617af
--- /dev/null
+++ b/tests/misc/timeout-large-parameters.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Validate large timeout parameters
+# Separated from standard parameter testing due to kernel overflow bugs.
+
+# Copyright (C) 2008-2020 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_ timeout
+getlimits_
+
+# It was seen on 32 bit Linux/HPPA and OpenIndiana 11
+# that a kernel time_t overflowing cause the timer to fire immediately.
+# This is still racy, but unlikely to cause an issue unless
+# timeout can't process the timer firing within 3 seconds.
+timeout $TIME_T_OFLOW sleep 3
+if test $? = 124; then
+ skip_ 'timeout $TIME_T_OFLOW ..., timed out immediately!'
+fi
+
+# timeout overflow
+timeout $UINT_OFLOW sleep 0 || fail=1
+
+# timeout overflow
+timeout ${TIME_T_OFLOW}d sleep 0 || fail=1
+
+# floating point notation
+timeout 2.34e+5d sleep 0 || fail=1
+
+# floating point overflow
+timeout $LDBL_MAX sleep 0 || fail=1
+returns_ 125 timeout -- -$LDBL_MAX sleep 0 || fail=1
+
+Exit $fail