diff options
Diffstat (limited to 'tests/misc/tty-eof')
-rwxr-xr-x | tests/misc/tty-eof | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/tests/misc/tty-eof b/tests/misc/tty-eof deleted file mode 100755 index dca154e..0000000 --- a/tests/misc/tty-eof +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/sh -# -*- perl -*- -# Test whether programs exit upon a single EOF from a tty. - -# Copyright (C) 2003, 2006, 2007 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 2 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, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. - -: ${PERL=perl} - -$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 -} - -ARGV_0=$0 -export ARGV_0 - -exec $PERL -w -- - <<\EOF - -# Ensure that cat exits upon a single EOF (^D) from a tty. -# Do the same for all programs that can read stdin, -# require no arguments and that write to standard output. -use strict; - -(my $ME = $ENV{ARGV_0}) =~ s|.*/||; - -# Some older versions of Expect.pm (e.g. 1.07) lack the log_user method, -# so check for that, too. -eval { require Expect; Expect->require_version('1.11') }; -$@ and (warn "$ME: this script requires Perl's Expect package >=1.11\n"), - exit 77; - -{ - my $fail = 0; - my @stdin_reading_commands = qw( - base64 - cat - cksum - dd - expand - fmt - fold - head - md5sum - nl - od - paste - pr - ptx - sha1sum - sha224sum - sha256sum - sha384sum - sha512sum - shuf - sort - sum - tac - tail - tee - tsort - unexpand - uniq - wc - ); - my $stderr = 'tty-eof.err'; - foreach my $cmd ((@stdin_reading_commands), 'cut -f2') - { - my $exp = new Expect; - $exp->log_user(0); - $exp->spawn("$cmd 2> $stderr") - or (warn "$ME: cannot run `$cmd': $!\n"), $fail=1, next; - # No input for cut -f2. - $cmd =~ /^cut/ - or $exp->send("a b\n"); - $exp->send("\cD"); # This is Control-D. FIXME: what if that's not EOF? - $exp->expect (0, '-re', "^a b\\r?\$"); - my $found = $exp->expect (1, '-re', "^.+\$"); - # $found and warn "F: $found: " . $exp->exp_match () . "\n"; - $exp->expect(1, 'eof'); - # Expect no output from cut, since we gave it no input. - defined $found || $cmd =~ /^cut/ - or (warn "$ME: $cmd didn't produce expected output\n"), - $fail=1, next; - defined $exp->exitstatus - or (warn "$ME: $cmd didn't exit after ^D from standard input\n"), - $fail=1, next; - my $s = $exp->exitstatus; - $s == 0 - or (warn "$ME: $cmd exited with status $s (expected 0)\n"), - $fail=1; - $exp->hard_close(); - - # dd normally writes to stderr. If it exits successfully, we're done. - $cmd eq 'dd' && $s == 0 - and next; - - if (-s $stderr) - { - warn "$ME: $cmd wrote to stderr:\n"; - system "cat $stderr"; - $fail = 1; - } - } - continue - { - unlink $stderr - or warn "$ME: failed to remove stderr file from $cmd, $stderr: $!\n"; - } - - exit $fail -} -EOF |