Commit | Line | Data |
5c161494 |
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 | } |