| #!/usr/bin/perl -w |
| |
| use strict; |
| use lib 't/lib'; |
| use MBTest tests => 8; |
| use DistGen; |
| blib_load('Module::Build'); |
| |
| my $dist; |
| |
| # Test that PL files don't get installed even in bin or lib |
| { |
| $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; |
| } |
| |
| # Test an empty PL target list runs the PL but doesn't |
| # add it to MANIFEST or cleanup |
| { |
| $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; |
| } |