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