This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix warning.
[perl5.git] / lib / ExtUtils / t / writemakefile_args.t
CommitLineData
69ff8adf
JH
1#!/usr/bin/perl -w
2
3# This is a test of the verification of the arguments to
4# WriteMakefile.
5
6BEGIN {
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
16use strict;
a7d1454b 17use Test::More tests => 16;
69ff8adf
JH
18
19use TieOut;
20use MakeMaker::Test::Utils;
a7d1454b 21use MakeMaker::Test::Setup::BFD;
69ff8adf
JH
22
23use ExtUtils::MakeMaker;
24
25chdir 't';
26
27perl_lib();
28
a7d1454b
RGS
29ok( setup_recurs(), 'setup' );
30END {
31 ok( chdir File::Spec->updir );
32 ok( teardown_recurs(), 'teardown' );
33}
34
69ff8adf
JH
35ok( 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
a884ca7c
MS
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 };
69ff8adf
JH
54
55 is( $warnings, <<VERIFY );
56WARNING: MAN3PODS takes a hash reference not a string/number.
57 Please inform the author.
58VERIFY
69ff8adf
JH
59
60 $warnings = '';
a884ca7c
MS
61 eval {
62 $mm = WriteMakefile(
63 NAME => 'Big::Dummy',
64 VERSION_FROM => 'lib/Big/Dummy.pm',
65 AUTHOR => sub {},
66 );
67 };
d5d4ec93 68
69ff8adf
JH
69 is( $warnings, <<VERIFY );
70WARNING: AUTHOR takes a string/number not a code reference.
71 Please inform the author.
72VERIFY
73
69ff8adf
JH
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 );
d5d4ec93 82
69ff8adf
JH
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 );
d5d4ec93 93
69ff8adf
JH
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 = '';
a884ca7c
MS
99 eval {
100 $mm = WriteMakefile(
101 NAME => 'Big::Dummy',
102 VERSION_FROM => 'lib/Big/Dummy.pm',
103 LIBS => { wibble => "wobble" },
104 );
105 };
d5d4ec93 106
69ff8adf
JH
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 );
69ff8adf 109
d5d4ec93
MS
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 } );
69ff8adf 123}