1#!/usr/bin/perl -w 2 3# Wherein we ensure the INST_* and INSTALL* variables are set correctly 4# in a default Makefile.PL run 5# 6# Essentially, this test is a Makefile.PL. 7 8BEGIN { 9 if( $ENV{PERL_CORE} ) { 10 chdir 't' if -d 't'; 11 @INC = ('../lib', 'lib'); 12 } 13 else { 14 unshift @INC, 't/lib'; 15 } 16} 17 18use strict; 19use Test::More tests => 23; 20use MakeMaker::Test::Utils; 21use ExtUtils::MakeMaker; 22use File::Spec; 23use TieOut; 24use Config; 25 26chdir 't'; 27 28perl_lib; 29 30$| = 1; 31 32my $Makefile = makefile_name; 33my $Curdir = File::Spec->curdir; 34my $Updir = File::Spec->updir; 35 36ok( chdir 'Big-Dummy', "chdir'd to Big-Dummy" ) || 37 diag("chdir failed: $!"); 38 39my $stdout = tie *STDOUT, 'TieOut' or die; 40my $mm = WriteMakefile( 41 NAME => 'Big::Dummy', 42 VERSION_FROM => 'lib/Big/Dummy.pm', 43 PREREQ_PM => {}, 44 PERL_CORE => $ENV{PERL_CORE}, 45); 46like( $stdout->read, qr{ 47 Writing\ $Makefile\ for\ Big::Liar\n 48 Big::Liar's\ vars\n 49 INST_LIB\ =\ \S+\n 50 INST_ARCHLIB\ =\ \S+\n 51 Writing\ $Makefile\ for\ Big::Dummy\n 52}x ); 53undef $stdout; 54untie *STDOUT; 55 56isa_ok( $mm, 'ExtUtils::MakeMaker' ); 57 58is( $mm->{NAME}, 'Big::Dummy', 'NAME' ); 59is( $mm->{VERSION}, 0.01, 'VERSION' ); 60 61my $config_prefix = $Config{installprefixexp} || $Config{installprefix} || 62 $Config{prefixexp} || $Config{prefix}; 63is( $mm->{PERLPREFIX}, $config_prefix, 'PERLPREFIX' ); 64 65is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' ); 66 67my($perl_src, $mm_perl_src); 68if( $ENV{PERL_CORE} ) { 69 $perl_src = File::Spec->catdir($Updir, $Updir); 70 $perl_src = File::Spec->canonpath($perl_src); 71 $mm_perl_src = File::Spec->canonpath($mm->{PERL_SRC}); 72} 73else { 74 $mm_perl_src = $mm->{PERL_SRC}; 75} 76 77is( $mm_perl_src, $perl_src, 'PERL_SRC' ); 78 79 80# PERM_* 81is( $mm->{PERM_RW}, 644, 'PERM_RW' ); 82is( $mm->{PERM_RWX}, 755, 'PERM_RWX' ); 83 84 85# INST_* 86is( $mm->{INST_ARCHLIB}, 87 $mm->{PERL_CORE} ? $mm->{PERL_ARCHLIB} 88 : File::Spec->catdir($Curdir, 'blib', 'arch'), 89 'INST_ARCHLIB'); 90is( $mm->{INST_BIN}, File::Spec->catdir($Curdir, 'blib', 'bin'), 91 'INST_BIN' ); 92 93is( keys %{$mm->{CHILDREN}}, 1 ); 94my($child_pack) = keys %{$mm->{CHILDREN}}; 95my $c_mm = $mm->{CHILDREN}{$child_pack}; 96is( $c_mm->{INST_ARCHLIB}, 97 $c_mm->{PERL_CORE} ? $c_mm->{PERL_ARCHLIB} 98 : File::Spec->catdir($Updir, 'blib', 'arch'), 99 'CHILD INST_ARCHLIB'); 100is( $c_mm->{INST_BIN}, File::Spec->catdir($Updir, 'blib', 'bin'), 101 'CHILD INST_BIN' ); 102 103 104my $inst_lib = File::Spec->catdir($Curdir, 'blib', 'lib'); 105is( $mm->{INST_LIB}, 106 $mm->{PERL_CORE} ? $mm->{PERL_LIB} : $inst_lib, 'INST_LIB' ); 107 108 109# INSTALL* 110is( $mm->{INSTALLDIRS}, 'site', 'INSTALLDIRS' ); 111 112 113 114# Make sure the INSTALL*MAN*DIR variables work. We forgot them 115# at one point. 116$stdout = tie *STDOUT, 'TieOut' or die; 117$mm = WriteMakefile( 118 NAME => 'Big::Dummy', 119 VERSION_FROM => 'lib/Big/Dummy.pm', 120 PERL_CORE => $ENV{PERL_CORE}, 121 INSTALLMAN1DIR => 'none', 122 INSTALLSITEMAN3DIR => 'none', 123 INSTALLVENDORMAN1DIR => 'none', 124 INST_MAN1DIR => 'none', 125); 126like( $stdout->read, qr{ 127 Writing\ $Makefile\ for\ Big::Liar\n 128 Big::Liar's\ vars\n 129 INST_LIB\ =\ \S+\n 130 INST_ARCHLIB\ =\ \S+\n 131 Writing\ $Makefile\ for\ Big::Dummy\n 132}x ); 133undef $stdout; 134untie *STDOUT; 135 136isa_ok( $mm, 'ExtUtils::MakeMaker' ); 137 138is ( $mm->{INSTALLMAN1DIR}, 'none' ); 139is ( $mm->{INSTALLSITEMAN3DIR}, 'none' ); 140is ( $mm->{INSTALLVENDORMAN1DIR}, 'none' ); 141is ( $mm->{INST_MAN1DIR}, 'none' ); 142