postamble.t revision 1.4
1#!/usr/bin/perl -w 2 3# Wherein we ensure that postamble works ok. 4 5BEGIN { 6 unshift @INC, 't/lib'; 7} 8 9use strict; 10use warnings; 11use Config; 12use Test::More tests => 8; 13use MakeMaker::Test::Utils; 14use MakeMaker::Test::Setup::BFD; 15use ExtUtils::MakeMaker; 16use TieOut; 17 18chdir 't'; 19perl_lib; # sets $ENV{PERL5LIB} relative to t/ 20 21use File::Temp qw[tempdir]; 22my $tmpdir = tempdir( DIR => '../t', CLEANUP => 1 ); 23use Cwd; my $cwd = getcwd; END { chdir $cwd } # so File::Temp can cleanup 24chdir $tmpdir; 25$| = 1; 26 27my $Makefile = makefile_name; 28 29ok( setup_recurs(), 'setup' ); 30END { 31 ok( chdir File::Spec->updir ); 32 ok( teardown_recurs(), 'teardown' ); 33} 34 35ok( chdir 'Big-Dummy', q{chdir'd to Big-Dummy} ) || 36 diag("chdir failed: $!"); 37 38{ 39 my $warnings = ''; 40 local $SIG{__WARN__} = sub { 41 if ( $Config{usecrosscompile} ) { 42 # libraries might not be present on the target system 43 # when cross-compiling 44 return if $_[0] =~ /\A\QWarning (mostly harmless): No library found for \E.+/ 45 } 46 $warnings = join '', @_; 47 }; 48 49 my $stdout = tie *STDOUT, 'TieOut' or die; 50 my $mm = WriteMakefile( 51 NAME => 'Big::Dummy', 52 VERSION_FROM => 'lib/Big/Dummy.pm', 53 postamble => { 54 FOO => 1, 55 BAR => "fugawazads" 56 } 57 ); 58 is( $warnings, '', 'postamble argument not warned about' ); 59} 60 61sub MY::postamble { 62 my($self, %extra) = @_; 63 64 is_deeply( \%extra, { FOO => 1, BAR => 'fugawazads' }, 65 'postamble args passed' ); 66 67 return <<OUT; 68# This makes sure the postamble gets written 69OUT 70 71} 72 73 74ok( open(MAKEFILE, $Makefile) ) or diag "Can't open $Makefile: $!"; 75{ local $/; 76 like( <MAKEFILE>, qr/^\# This makes sure the postamble gets written\n/m, 77 'postamble added to the Makefile' ); 78} 79close MAKEFILE; 80