summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2015-01-06 03:36:57 +0000
committerPádraig Brady <P@draigBrady.com>2015-01-08 14:16:01 +0000
commitfb13cdc727541adef0010279f770f2afa358002e (patch)
tree3d05bcfcf260cf4673baf9d5162129d77e1bc962
parentff97b62fe316faf493c8d58339893ee11b02464e (diff)
downloadcoreutils-fb13cdc727541adef0010279f770f2afa358002e.tar.xz
maint: adjustments related to previous shuf crash fix
* tests/misc/shuf.sh: Improve the test so it detects crashes in more cases. * NEWS: Mention the previous fix.
-rw-r--r--NEWS3
-rwxr-xr-xtests/misc/shuf.sh17
2 files changed, 12 insertions, 8 deletions
diff --git a/NEWS b/NEWS
index b81154d86..f59bfc1d6 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,9 @@ GNU coreutils NEWS -*- outline -*-
rm indicates the correct number of arguments in its confirmation prompt,
on all platforms. [bug introduced in coreutils-8.22]
+ shuf -i with a single redundant operand, would crash instead of issuing
+ a diagnostic. [bug introduced in coreutils-8.22]
+
** New features
chroot accepts the new --skip-chdir option to not change the working directory
diff --git a/tests/misc/shuf.sh b/tests/misc/shuf.sh
index 5e85d9aca..34f422507 100755
--- a/tests/misc/shuf.sh
+++ b/tests/misc/shuf.sh
@@ -47,7 +47,8 @@ test "$t" = 'a b c d e' || { fail=1; echo "not a permutation" 1>&2; }
shuf -er
test $? -eq 1 || fail=1
-# coreutils-8.23 dumps core.
+# coreutils-8.22 and 8.23 dump core
+# with a single redundant operand with --input-range
shuf -i0-0 1
test $? -eq 1 || fail=1
@@ -70,7 +71,7 @@ touch unreadable || framework_failure_
chmod 0 unreadable || framework_failure_
if ! test -r unreadable; then
shuf -n0 unreadable || fail=1
- shuf -n1 unreadable && fail=1
+ { shuf -n1 unreadable || test $? -ne 1; } && fail=1
fi
# Multiple -n is accepted, should use the smallest value
@@ -81,25 +82,25 @@ test "$c" -eq 3 || { fail=1; echo "Multiple -n failed">&2 ; }
# Test error conditions
# -i and -e must not be used together
-: | shuf -i0-9 -e A B &&
+: | { shuf -i0-9 -e A B || test $? -ne 1; } &&
{ fail=1; echo "shuf did not detect erroneous -e and -i usage.">&2 ; }
# Test invalid value for -n
-: | shuf -nA &&
+: | { shuf -nA || test $? -ne 1; } &&
{ fail=1; echo "shuf did not detect erroneous -n usage.">&2 ; }
# Test multiple -i
-shuf -i0-9 -n10 -i8-90 &&
+{ shuf -i0-9 -n10 -i8-90 || test $? -ne 1; } &&
{ fail=1; echo "shuf did not detect multiple -i usage.">&2 ; }
# Test invalid range
for ARG in '1' 'A' '1-' '1-A'; do
- shuf -i$ARG &&
+ { shuf -i$ARG || test $? -ne 1; } &&
{ fail=1; echo "shuf did not detect erroneous -i$ARG usage.">&2 ; }
done
# multiple -o are forbidden
-shuf -i0-9 -o A -o B &&
+{ shuf -i0-9 -o A -o B || test $? -ne 1; } &&
{ fail=1; echo "shuf did not detect erroneous multiple -o usage.">&2 ; }
# multiple random-sources are forbidden
-shuf -i0-9 --random-source A --random-source B &&
+{ shuf -i0-9 --random-source A --random-source B || test $? -ne 1; } &&
{ fail=1; echo "shuf did not detect multiple --random-source usage.">&2 ; }
# Test --repeat option