#!./perl -w
BEGIN {
plan(
skip_all
=>
"GDBM_File was not built"
)
unless
$Config
{extensions} =~ /\bGDBM_File\b/;
plan(
skip_all
=>
"GDBM_File is flaky in $^O"
)
if
$^O =~ /darwin/;
plan(
tests
=> 8);
use_ok(
'GDBM_File'
);
}
open
my
$fh
,
'<'
, $^X or
die
"Can't open $^X: $!"
;
my
$fileno
=
fileno
$fh
;
isnt(
$fileno
,
undef
,
"Can find next available file descriptor"
);
close
$fh
or
die
$!;
is((
open
$fh
,
"<&=$fileno"
),
undef
,
"Check that we cannot open fileno $fileno. \$! is $!"
);
umask
(0);
my
$wd
= tempdir(
CLEANUP
=> 1);
my
%h
;
isa_ok(
tie
(
%h
,
'GDBM_File'
, File::Spec->catfile(
$wd
,
'fatal_dbmx'
),
GDBM_WRCREAT, 0640),
'GDBM_File'
);
isnt((
open
$fh
,
"<&=$fileno"
),
undef
,
"dup fileno $fileno"
)
or diag(
"\$! = $!"
);
isnt(
close
$fh
,
undef
,
"close fileno $fileno, out from underneath the GDBM_File"
);
my
$res
=
eval
{
$h
{Perl} =
'Rules'
;
untie
%h
;
99;
};
SKIP: {
skip
"Can't trigger failure"
, 2
if
(
defined
$res
and
$res
== 99);
is
$res
,
undef
,
"eval should return undef"
;
like($@,
qr/ at .*\bfatal\.t line \d+\.\n\z/
,
'expected error message from GDBM_File'
);
}