MakeMaker 5.55_03 -> 5.90_01
[p5sagit/p5-mst-13.2.git] / lib / ExtUtils / t / INST_PREFIX.t
1 #!/usr/bin/perl -w
2
3 # Wherein we ensure the INST_* and INSTALL* variables are set correctly
4 # when various PREFIX variables are set.
5 #
6 # Essentially, this test is a Makefile.PL.
7
8 BEGIN {
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
18 use strict;
19 use Test::More tests => 24;
20 use MakeMaker::Test::Utils;
21 use ExtUtils::MakeMaker;
22 use File::Spec;
23 use TieOut;
24 use Config;
25
26 $ENV{PERL_CORE} ? chdir '../lib/ExtUtils/t' : chdir 't';
27
28 perl_lib;
29
30 $| = 1;
31
32 my $Makefile = makefile_name;
33 my $Curdir = File::Spec->curdir;
34 my $Updir  = File::Spec->updir;
35
36 ok( chdir 'Big-Fat-Dummy', "chdir'd to Big-Fat-Dummy" ) ||
37   diag("chdir failed: $!");
38
39 my $stdout = tie *STDOUT, 'TieOut' or die;
40 my $mm = WriteMakefile(
41     NAME          => 'Big::Fat::Dummy',
42     VERSION_FROM  => 'lib/Big/Fat/Dummy.pm',
43     PREREQ_PM     => {},
44     PERL_CORE     => $ENV{PERL_CORE},
45     PREFIX        => 'foo/bar',
46 );
47 like( $stdout->read, qr{
48                         Writing\ $Makefile\ for\ Big::Fat::Liar\n
49                         Big::Fat::Liar's\ vars\n
50                         INST_LIB\ =\ \S+\n
51                         INST_ARCHLIB\ =\ \S+\n
52                         Writing\ $Makefile\ for\ Big::Fat::Dummy\n
53 }x );
54 undef $stdout;
55 untie *STDOUT;
56
57 isa_ok( $mm, 'ExtUtils::MakeMaker' );
58
59 is( $mm->{NAME}, 'Big::Fat::Dummy',  'NAME' );
60 is( $mm->{VERSION}, 0.01,            'VERSION' );
61
62 is( $mm->{PREFIX}, 'foo/bar',   'PREFIX' );
63
64 is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' );
65
66 my($perl_src, $mm_perl_src);
67 if( $ENV{PERL_CORE} ) {
68     $perl_src = File::Spec->catdir($Updir, $Updir, $Updir, $Updir);
69     $perl_src = File::Spec->canonpath($perl_src);
70     $mm_perl_src = File::Spec->canonpath($mm->{PERL_SRC});
71 }
72 else {
73     $mm_perl_src = $mm->{PERL_SRC};
74 }
75
76 is( $mm_perl_src, $perl_src,     'PERL_SRC' );
77
78
79 # Every INSTALL* variable must start with some PREFIX.
80 my @Perl_Install = qw(archlib    privlib   bin     script 
81                       man1dir       man3dir);
82 my @Site_Install = qw(sitearch   sitelib   sitebin        
83                       siteman1dir siteman3dir);
84 my @Vend_Install = qw(vendorarch vendorlib vendorbin 
85                       vendorman1dir vendorman3dir);
86
87 foreach my $var (@Perl_Install) {
88     like( $mm->{uc "install$var"}, qr/^\$\(PREFIX\)/, "PREFIX + $var" );
89 }
90
91 foreach my $var (@Site_Install) {
92     like( $mm->{uc "install$var"}, qr/^\$\(SITEPREFIX\)/, 
93                                                     "SITEPREFIX + $var" );
94 }
95
96 foreach my $var (@Vend_Install) {
97     like( $mm->{uc "install$var"}, qr/^\$\(VENDORPREFIX\)/,
98                                                     "VENDORPREFIX + $var" );
99 }