#!/usr/bin/perl -w
blib_load(
'Module::Build'
);
my
$dist
;
{
$dist
= DistGen->new(
dir
=> MBTest->tmpdir );
$dist
->regen;
$dist
->chdir_in;
my
$distname
=
$dist
->name;
$dist
->change_build_pl({
module_name
=>
$distname
,
PL_files
=> {
'bin/foo.PL'
=>
'bin/foo'
,
'lib/Bar.pm.PL'
=>
'lib/Bar.pm'
,
},
});
$dist
->add_file(
"bin/foo.PL"
,
<<'END');
open my $fh, ">", $ARGV[0] or die $!;
print $fh "foo\n";
END
$dist
->add_file(
"lib/Bar.pm.PL"
,
<<'END');
open my $fh, ">", $ARGV[0] or die $!;
print $fh "bar\n";
END
$dist
->regen;
my
$mb
= Module::Build->new_from_context(
install_base
=>
"test_install"
);
$mb
->dispatch(
"install"
);
ok -e
"test_install/bin/foo"
,
"Generated PL_files installed from bin"
;
ok -e
"test_install/lib/perl5/Bar.pm"
,
" and from lib"
;
ok !-e
"test_install/bin/foo.PL"
,
"PL_files not installed from bin"
;
ok !-e
"test_install/lib/perl5/Bar.pm.PL"
,
" nor from lib"
;
is slurp(
"test_install/bin/foo"
),
"foo\n"
,
"Generated bin contains correct content"
;
is slurp(
"test_install/lib/perl5/Bar.pm"
),
"bar\n"
,
" so does the lib"
;
$dist
->chdir_original
if
$dist
->did_chdir;
}
{
$dist
= DistGen->new(
dir
=> MBTest->tmpdir );
$dist
->regen;
$dist
->chdir_in;
my
$distname
=
$dist
->name;
$dist
->change_build_pl({
module_name
=>
$distname
,
PL_files
=> {
'Special.PL'
=> [],
},
});
$dist
->add_file(
"Special.PL"
,
<<'END');
open my $fh, ">", "foo" or die $!;
print $fh "foo\n";
END
$dist
->regen;
my
$mb
= Module::Build->new_from_context();
$mb
->dispatch(
"code"
);
ok( -f
"foo"
,
"special PL file ran"
);
my
$cleanup
=
$mb
->cleanup;
my
%cleanup
=
map
{
$_
=> 1 }
$mb
->cleanup;
is(
$cleanup
{foo},
undef
,
"generated special file not added to cleanup"
);
$dist
->chdir_original
if
$dist
->did_chdir;
}