xref: /openbsd-src/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/prereq.t (revision d13be5d47e4149db2549a9828e244d59dbc43f15)
1#!/usr/bin/perl -w
2
3# This is a test of the verification of the arguments to
4# WriteMakefile.
5
6BEGIN {
7    unshift @INC, 't/lib';
8}
9
10use strict;
11use Test::More tests => 13;
12
13use TieOut;
14use MakeMaker::Test::Utils;
15use MakeMaker::Test::Setup::BFD;
16
17use ExtUtils::MakeMaker;
18
19chdir 't';
20
21perl_lib();
22
23ok( setup_recurs(), 'setup' );
24END {
25    ok( chdir File::Spec->updir );
26    ok( teardown_recurs(), 'teardown' );
27}
28
29ok( chdir 'Big-Dummy', "chdir'd to Big-Dummy" ) ||
30  diag("chdir failed: $!");
31
32{
33    ok( my $stdout = tie *STDOUT, 'TieOut' );
34    my $warnings = '';
35    local $SIG{__WARN__} = sub {
36        $warnings .= join '', @_;
37    };
38
39    WriteMakefile(
40        NAME            => 'Big::Dummy',
41        PREREQ_PM       => {
42            strict  => 0
43        }
44    );
45    is $warnings, '';
46
47    $warnings = '';
48    WriteMakefile(
49        NAME            => 'Big::Dummy',
50        PREREQ_PM       => {
51            strict  => 99999
52        }
53    );
54    is $warnings,
55    sprintf("Warning: prerequisite strict 99999 not found. We have %s.\n",
56            $strict::VERSION);
57
58    $warnings = '';
59    WriteMakefile(
60        NAME            => 'Big::Dummy',
61        PREREQ_PM       => {
62            "I::Do::Not::Exist" => 0,
63        }
64    );
65    is $warnings,
66    "Warning: prerequisite I::Do::Not::Exist 0 not found.\n";
67
68    $warnings = '';
69    WriteMakefile(
70        NAME            => 'Big::Dummy',
71        PREREQ_PM       => {
72            "I::Do::Not::Exist" => 0,
73            "strict"            => 99999,
74        }
75    );
76    is $warnings,
77    "Warning: prerequisite I::Do::Not::Exist 0 not found.\n".
78    sprintf("Warning: prerequisite strict 99999 not found. We have %s.\n",
79            $strict::VERSION);
80
81    $warnings = '';
82    eval {
83        WriteMakefile(
84            NAME            => 'Big::Dummy',
85            PREREQ_PM       => {
86                "I::Do::Not::Exist" => 0,
87                "Nor::Do::I"        => 0,
88                "strict"            => 99999,
89            },
90            PREREQ_FATAL    => 1,
91        );
92    };
93
94    is $warnings, '';
95    is $@, <<'END', "PREREQ_FATAL";
96MakeMaker FATAL: prerequisites not found.
97    I::Do::Not::Exist not installed
98    Nor::Do::I not installed
99    strict 99999
100
101Please install these modules first and rerun 'perl Makefile.PL'.
102END
103
104
105    $warnings = '';
106    eval {
107        WriteMakefile(
108            NAME            => 'Big::Dummy',
109            PREREQ_PM       => {
110                "I::Do::Not::Exist" => 0,
111            },
112            CONFIGURE => sub {
113                require I::Do::Not::Exist;
114            },
115            PREREQ_FATAL    => 1,
116        );
117    };
118
119    is $warnings, '';
120    is $@, <<'END', "PREREQ_FATAL happens before CONFIGURE";
121MakeMaker FATAL: prerequisites not found.
122    I::Do::Not::Exist not installed
123
124Please install these modules first and rerun 'perl Makefile.PL'.
125END
126
127}
128