Fix a2p manpage (from Debian)
[p5sagit/p5-mst-13.2.git] / lib / ExtUtils / t / writemakefile_args.t
1 #!/usr/bin/perl -w
2
3 # This is a test of the verification of the arguments to
4 # WriteMakefile.
5
6 BEGIN {
7     if( $ENV{PERL_CORE} ) {
8         chdir 't' if -d 't';
9         @INC = ('../lib', 'lib');
10     }
11     else {
12         unshift @INC, 't/lib';
13     }
14 }
15
16 use strict;
17 use Test::More tests => 16;
18
19 use TieOut;
20 use MakeMaker::Test::Utils;
21 use MakeMaker::Test::Setup::BFD;
22
23 use ExtUtils::MakeMaker;
24
25 chdir 't';
26
27 perl_lib();
28
29 ok( setup_recurs(), 'setup' );
30 END {
31     ok( chdir File::Spec->updir );
32     ok( teardown_recurs(), 'teardown' );
33 }
34
35 ok( chdir 'Big-Dummy', "chdir'd to Big-Dummy" ) ||
36   diag("chdir failed: $!");
37
38 {
39     ok( my $stdout = tie *STDOUT, 'TieOut' );
40     my $warnings = '';
41     local $SIG{__WARN__} = sub {
42         $warnings .= join '', @_;
43     };
44
45     my $mm;
46
47     eval {
48         $mm = WriteMakefile(
49             NAME            => 'Big::Dummy',
50             VERSION_FROM    => 'lib/Big/Dummy.pm',
51             MAN3PODS        => ' ', # common mistake
52         );
53     };
54
55     is( $warnings, <<VERIFY );
56 WARNING: MAN3PODS takes a hash reference not a string/number.
57          Please inform the author.
58 VERIFY
59
60     $warnings = '';
61     eval {
62         $mm = WriteMakefile(
63             NAME            => 'Big::Dummy',
64             VERSION_FROM    => 'lib/Big/Dummy.pm',
65             AUTHOR          => sub {},
66         );
67     };
68
69     is( $warnings, <<VERIFY );
70 WARNING: AUTHOR takes a string/number not a code reference.
71          Please inform the author.
72 VERIFY
73
74     # LIBS accepts *both* a string or an array ref.  The first cut of
75     # our verification did not take this into account.
76     $warnings = '';
77     $mm = WriteMakefile(
78         NAME            => 'Big::Dummy',
79         VERSION_FROM    => 'lib/Big/Dummy.pm',
80         LIBS            => '-lwibble -lwobble',
81     );
82
83     # We'll get warnings about the bogus libs, that's ok.
84     unlike( $warnings, qr/WARNING: .* takes/ );
85     is_deeply( $mm->{LIBS}, ['-lwibble -lwobble'] );
86
87     $warnings = '';
88     $mm = WriteMakefile(
89         NAME            => 'Big::Dummy',
90         VERSION_FROM    => 'lib/Big/Dummy.pm',
91         LIBS            => ['-lwibble', '-lwobble'],
92     );
93
94     # We'll get warnings about the bogus libs, that's ok.
95     unlike( $warnings, qr/WARNING: .* takes/ );
96     is_deeply( $mm->{LIBS}, ['-lwibble', '-lwobble'] );
97
98     $warnings = '';
99     eval {
100         $mm = WriteMakefile(
101             NAME            => 'Big::Dummy',
102             VERSION_FROM    => 'lib/Big/Dummy.pm',
103             LIBS            => { wibble => "wobble" },
104         );
105     };
106
107     # We'll get warnings about the bogus libs, that's ok.
108     like( $warnings, qr{^WARNING: LIBS takes a array reference or string/number not a hash reference}m );
109
110
111     $warnings = '';
112     $mm = WriteMakefile(
113         NAME            => 'Big::Dummy',
114         WIBBLE          => 'something',
115         wump            => { foo => 42 },
116     );
117
118     like( $warnings, qr{^WARNING: WIBBLE is not a known parameter.\n}m );
119     like( $warnings, qr{^WARNING: wump is not a known parameter.\n}m );
120
121     is( $mm->{WIBBLE}, 'something' );
122     is_deeply( $mm->{wump}, { foo => 42 } );
123 }