ExtUtils::Install VMS extended character set support
[p5sagit/p5-mst-13.2.git] / lib / ExtUtils / t / INST.t
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
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 => 26;
20 use MakeMaker::Test::Utils;
21 use MakeMaker::Test::Setup::BFD;
22 use ExtUtils::MakeMaker;
23 use File::Spec;
24 use TieOut;
25 use Config;
26
27 my $Is_VMS = $^O eq 'VMS';
28
29 chdir 't';
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
39 ok( setup_recurs(), 'setup' );
40 END {
41     ok( chdir File::Spec->updir );
42     ok( teardown_recurs(), 'teardown' );
43 }
44
45 ok( chdir 'Big-Dummy', "chdir'd to Big-Dummy" ) ||
46   diag("chdir failed: $!");
47
48 my $stdout = tie *STDOUT, 'TieOut' or die;
49 my $mm = WriteMakefile(
50     NAME          => 'Big::Dummy',
51     VERSION_FROM  => 'lib/Big/Dummy.pm',
52     PREREQ_PM     => {},
53     PERL_CORE     => $ENV{PERL_CORE},
54 );
55 like( $stdout->read, qr{
56                         Writing\ $Makefile\ for\ Big::Liar\n
57                         Big::Liar's\ vars\n
58                         INST_LIB\ =\ \S+\n
59                         INST_ARCHLIB\ =\ \S+\n
60                         Writing\ $Makefile\ for\ Big::Dummy\n
61 }x );
62 undef $stdout;
63 untie *STDOUT;
64
65 isa_ok( $mm, 'ExtUtils::MakeMaker' );
66
67 is( $mm->{NAME}, 'Big::Dummy',  'NAME' );
68 is( $mm->{VERSION}, 0.01,            'VERSION' );
69
70 my $config_prefix = $Config{installprefixexp} || $Config{installprefix} ||
71                     $Config{prefixexp}        || $Config{prefix};
72 is( $mm->{PERLPREFIX}, $config_prefix,   'PERLPREFIX' );
73
74 is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' );
75
76 my($perl_src, $mm_perl_src);
77 if( $ENV{PERL_CORE} ) {
78     $perl_src = File::Spec->catdir($Updir, $Updir);
79     $perl_src = VMS::Filespec::vmsify($perl_src) if $Is_VMS;
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_*
96 my $expect = File::Spec->catdir($Curdir, 'blib', 'arch');
97 $expect = VMS::Filespec::vmspath($expect) if $Is_VMS;
98 is( $mm->{INST_ARCHLIB}, 
99     $mm->{PERL_CORE} ? $mm->{PERL_ARCHLIB}
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' );
105
106 is( keys %{$mm->{CHILDREN}}, 1 );
107 my($child_pack) = keys %{$mm->{CHILDREN}};
108 my $c_mm = $mm->{CHILDREN}{$child_pack};
109 $expect = File::Spec->catdir($Updir, 'blib', 'arch');
110 $expect = VMS::Filespec::vmspath($expect) if $Is_VMS;
111 is( $c_mm->{INST_ARCHLIB}, 
112     $c_mm->{PERL_CORE} ? $c_mm->{PERL_ARCHLIB}
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' );
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' );
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' );