From b5fe5ca2134a9ef76f895fb7bc7abec4e8196b08 Mon Sep 17 00:00:00 2001 From: Slaven Rezic Date: Thu, 24 Oct 2002 02:44:35 +0200 Subject: Re: [perl #18048] read \*FH, ... returns undef but doesn' t set $! if \*FH not open Message-ID: <87vg3sixm4.fsf@vran.herceg.de> p4raw-id: //depot/perl@18115 --- t/io/binmode.t | 14 ++++++++++++-- t/io/print.t | 27 ++++++++++++++++++++++----- t/io/read.t | 27 ++++++++++++++++++++------- 3 files changed, 54 insertions(+), 14 deletions(-) (limited to 't/io') diff --git a/t/io/binmode.t b/t/io/binmode.t index 3775290bf5..f50d0f7fa8 100644 --- a/t/io/binmode.t +++ b/t/io/binmode.t @@ -3,12 +3,13 @@ BEGIN { chdir 't' if -d 't'; @INC = qw(. ../lib); + require './test.pl'; } use Config; +use Errno; -require "test.pl"; -plan(tests => 8); +plan(tests => 9); ok( binmode(STDERR), 'STDERR made binary' ); if (find PerlIO::Layer 'perlio') { @@ -28,3 +29,12 @@ if (find PerlIO::Layer 'perlio') { } ok( binmode(STDOUT, ":raw"), ' raw' ); ok( binmode(STDOUT, ":crlf"), ' and crlf' ); + +SKIP: { + skip "no EBADF", 1 if (!exists &Errno::EBADF); + + no warnings 'io'; + $! = 0; + binmode(B); + ok($! == &Errno::EBADF); +} diff --git a/t/io/print.t b/t/io/print.t index 0578ee6a29..f33aa666a3 100755 --- a/t/io/print.t +++ b/t/io/print.t @@ -1,8 +1,16 @@ #!./perl -print "1..18\n"; +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; +} + +use strict 'vars'; +use Errno; + +print "1..19\n"; -$foo = 'STDOUT'; +my $foo = 'STDOUT'; print $foo "ok 1\n"; print "ok 2\n","ok 3\n","ok 4\n"; @@ -14,7 +22,7 @@ print foo "ok 6\n"; printf "ok %d\n",7; printf("ok %d\n",8); -@a = ("ok %d%c",9,ord("\n")); +my @a = ("ok %d%c",9,ord("\n")); printf @a; $a[1] = 10; @@ -25,10 +33,19 @@ $\ = "\n"; print "ok","11"; -@x = ("ok","12\nok","13\nok"); -@y = ("15\nok","16"); +my @x = ("ok","12\nok","13\nok"); +my @y = ("15\nok","16"); print @x,"14\nok",@y; { local $\ = "ok 17\n# null =>[\000]\nok 18\n"; print ""; } + +if (!exists &Errno::EBADF) { + print "ok 19 # skipped: no EBADF\n"; +} else { + $! = 0; + print NONEXISTENT "foo"; + print "not " if ($! != &Errno::EBADF); + print "ok 19\n"; +} diff --git a/t/io/read.t b/t/io/read.t index b27fde17c7..ea2672dedb 100755 --- a/t/io/read.t +++ b/t/io/read.t @@ -2,13 +2,22 @@ # $RCSfile$ -print "1..1\n"; +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require './test.pl'; +} + +use strict; +use Errno; + +plan tests => 2; open(A,"+>a"); print A "_"; seek(A,0,0); -$b = "abcd"; +my $b = "abcd"; $b = ""; read(A,$b,1,4); @@ -17,10 +26,14 @@ close(A); unlink("a"); -if ($b eq "\000\000\000\000_") { - print "ok 1\n"; -} else { # Probably "\000bcd_" - print "not ok 1\n"; -} +is($b,"\000\000\000\000_"); # otherwise probably "\000bcd_" unlink 'a'; + +SKIP: { + skip "no EBADF", 1 if (!exists &Errno::EBADF); + + $! = 0; + read(B,$b,1); + ok($! == &Errno::EBADF); +} -- cgit v1.2.1