BEGIN {
unshift
@INC
,
't/lib'
;
}
chdir
't'
;
my
$MM
=
bless
{
DIR
=> [
'subdir'
] },
'MM'
;
my
$DIRNAME
=
'Problem-Module'
;
my
%FILES
= (
'Makefile.PL'
=>
<<'END',
use ExtUtils::MakeMaker;
WriteMakefile(NAME => 'Problem::Module');
END
'subdir/Makefile.PL'
=>
<<'END',
printf "\@INC %s .\n", (grep { $_ eq '.' } @INC) ? "has" : "doesn't have";
warn "I think I'm going to be sick\n";
die "YYYAaaaakkk\n";
END
);
hash2files(
$DIRNAME
, \
%FILES
);
END {
ok(
chdir
File::Spec->updir,
'chdir ..'
);
ok( rmtree(
$DIRNAME
),
'teardown'
);
}
ok(
chdir
$DIRNAME
,
"chdir'd to Problem-Module"
) ||
diag(
"chdir failed: $!"
);
{
my
$stdout
=
tie
*STDOUT
,
'TieOut'
or
die
;
my
$warning
=
''
;
local
$SIG
{__WARN__} =
sub
{
$warning
=
join
''
,
@_
};
eval
{
$MM
->eval_in_subdirs; };
is(
$stdout
->
read
,
qq{\@INC has .\n}
,
'cwd in @INC'
);
like( $@,
qr{^ERROR from evaluation of .*subdir.*Makefile.PL: YYYAaaaakkk}
,
'Makefile.PL death in subdir warns'
);
untie
*STDOUT
;
}