mirror of
https://github.com/coreutils/coreutils.git
synced 2024-12-25 17:57:15 +08:00
60 lines
1.3 KiB
Bash
Executable File
60 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# make sure `sum -s' works for input whose sum of bytes is larger than 2^32
|
|
|
|
if test "$VERBOSE" = yes; then
|
|
set -x
|
|
sum --version
|
|
fi
|
|
|
|
$PERL -e 1 > /dev/null 2>&1 || {
|
|
echo 1>&2 "$0: configure didn't find a usable version of Perl," \
|
|
"so can't run this test"
|
|
exit 77
|
|
}
|
|
|
|
# Avoid a problem when run in a UTF-8 locale.
|
|
# Otherwise, Perl would try to (and fail to) interpret
|
|
# each string below as a sequence of multi-byte characters.
|
|
LC_ALL=C
|
|
export LC_ALL
|
|
|
|
pwd=`pwd`
|
|
tmp=sum-s.$$
|
|
trap 'status=$?; cd $pwd; rm -rf $tmp && exit $status' 0
|
|
trap '(exit $?); exit' 1 2 13 15
|
|
|
|
framework_failure=0
|
|
mkdir $tmp || framework_failure=1
|
|
cd $tmp || framework_failure=1
|
|
|
|
if test $framework_failure = 1; then
|
|
echo 'failure in testing framework' 1>&2
|
|
(exit 1); exit
|
|
fi
|
|
|
|
fail=0
|
|
|
|
# FYI, 16843009 is floor (2^32 / 255).
|
|
|
|
# aka: perl -e 'print chr(255) x 16843009'
|
|
$PERL -e '$s = chr(255) x 65537; foreach (1..257) {print $s}' \
|
|
| sum -s > out || fail=1
|
|
cat > exp <<\EOF
|
|
65535 32897
|
|
EOF
|
|
cmp out exp || fail=1
|
|
test $fail = 1 && diff out exp 2> /dev/null
|
|
|
|
rm -f out exp
|
|
|
|
# aka: perl -e 'print chr(255) x 16843010'
|
|
$PERL -e '$s = chr(255) x 65537; foreach (1..257) {print $s}; print chr(255)' \
|
|
| sum -s > out || fail=1
|
|
cat > exp <<\EOF
|
|
254 32897
|
|
EOF
|
|
cmp out exp || fail=1
|
|
test $fail = 1 && diff out exp 2> /dev/null
|
|
|
|
(exit $fail); exit
|