1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-02 18:24:01 +02:00
Files
coreutils/tests/misc/cat-tty-eof
Jim Meyering 33c62fcef3 Generalize, clean-up, and test for
cat, cksum, md5sum, and sha1sum all in the same loop.
2003-02-18 07:59:58 +00:00

47 lines
1.2 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
: ${PERL=perl}
case "$PERL" in
*'missing perl')
echo 1>&2 "$0: configure didn't find a usable version of Perl, so can't run thi
s test"
exit 77
;;
esac
exec $PERL -w -- - <<\EOF
# Ensure that cat exits upon a single EOF (^D) from a tty.
use strict;
(my $ME = $0) =~ s|.*/||;
eval { require Expect };
$@ and (warn "$ME: this script requires Perl's Expect package\n"), exit 77;
{
my $fail = 0;
foreach my $cmd (qw(md5sum sha1sum cksum cat))
{
my $exp = new Expect;
$exp->log_user(0);
$exp->spawn($cmd)
or (warn "$ME: cannot run `$cmd': $!\n"), $fail=1, next;
$exp->send("foo\n");
$exp->send(''); # FIXME: it'd be better not to hard-code ^D here
$exp->expect (0, '-re', "^foo\\r?\$");
my $found = $exp->expect (1, '-re', "^.+\$");
$found and warn "F: $found: " . $exp->exp_match () . "\n";
$exp->expect(0, 'eof');
# defined $exp->exitstatus and warn "E: " . $exp->exitstatus . "\n";
defined $found && defined $exp->exitstatus && $exp->exitstatus == 0
or (warn "$ME: $cmd didn't exit after ^D from standard input\n"),
$fail=1;
$exp->hard_close();
}
exit $fail
}
EOF