#!./perl
BEGIN {
chdir
't'
if
-d
't'
;
require
'./test.pl'
;
set_up_inc(
'../lib'
);
skip_all_if_miniperl(
"miniperl can't load PerlIO::scalar"
);
}
plan(
tests
=> 2*11*29);
use
Errno
qw(EBADF ENOENT)
;
open
(SCALARFILE,
"<"
, \
"wibble"
) or
die
$!;
open
(CLOSEDFILE,
"<"
,
"./test.pl"
) or
die
$!;
close
(CLOSEDFILE) or
die
$!;
opendir
(CLOSEDDIR,
"../lib"
) or
die
$!;
closedir
(CLOSEDDIR) or
die
$!;
foreach
my
$op
(
qw(stat lstat)
,
(
map
{
"-$_"
}
qw(r w x o R W X O e z s f d l p S b c t u g k T B M A C)
),
) {
foreach
my
$arg
(
(
map
{ (
$_
,
"\\*$_"
) }
qw(NEVEROPENED SCALARFILE CLOSEDFILE CLOSEDDIR _)
),
"\"tmpnotexist\""
,
) {
my
$argdesc
=
$arg
;
if
(
$arg
eq
"_"
) {
my
@z
=
lstat
"tmpnotexist"
;
$argdesc
.=
" with prior stat fail"
;
}
SKIP: {
if
(
$op
eq
"-l"
&&
$arg
=~ /\A\\/) {
skip
"-l on globref"
, 2;
}
if
(
$op
eq
"-t"
&&
$arg
eq
"\"tmpnotexist\""
) {
skip
"-t on filename"
, 2;
}
$! = 0;
my
$res
=
eval
"$op $arg"
;
my
$err
= $!;
is
$res
,
$op
=~ /\A-/ ?
undef
: !!0,
"result of $op $arg"
;
is 0+
$err
,
$arg
eq
"\"tmpnotexist\""
||
(
$op
=~ /\A-[TB]\z/ &&
$arg
=~ /_\z/) ? ENOENT : EBADF,
"error from $op $arg"
;
}
}
}
1;