7e970ceb3db00edec57c83c57d953579daf90d5e
[perl.git] / ext / ExtUtils-MakeMaker / t / metafile_data.t
1 BEGIN {
2     unshift @INC, 't/lib';
3 }
4
5 use strict;
6 use Test::More tests => 7;
7
8 use Data::Dumper;
9
10 require ExtUtils::MM_Any;
11
12 my $new_mm = sub {
13     return bless { ARGS => {@_}, @_ }, 'ExtUtils::MM_Any';
14 };
15
16 {
17     my $mm = $new_mm->(
18         DISTNAME        => 'Foo-Bar',
19         VERSION         => 1.23,
20         PM              => {
21             "Foo::Bar"          => 'lib/Foo/Bar.pm',
22         },
23     );
24
25     is_deeply [$mm->metafile_data], [
26         name            => 'Foo-Bar',
27         version         => 1.23,
28         abstract        => undef,
29         author          => [],
30         license         => 'unknown',
31         distribution_type       => 'module',
32
33         configure_requires      => {
34             'ExtUtils::MakeMaker'       => 0,
35         },
36         build_requires      => {
37             'ExtUtils::MakeMaker'       => 0,
38         },
39
40         no_index        => {
41             directory           => [qw(t inc)],
42         },
43
44         generated_by => "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
45         'meta-spec'  => {
46             url         => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 
47             version     => 1.4
48         },
49     ];
50
51
52     is_deeply [$mm->metafile_data({}, { no_index => { directory => [qw(foo)] } })], [
53         name            => 'Foo-Bar',
54         version         => 1.23,
55         abstract        => undef,
56         author          => [],
57         license         => 'unknown',
58         distribution_type       => 'module',
59
60         configure_requires      => {
61             'ExtUtils::MakeMaker'       => 0,
62         },
63         build_requires      => {
64             'ExtUtils::MakeMaker'       => 0,
65         },
66
67         no_index        => {
68             directory           => [qw(t inc foo)],
69         },
70
71         generated_by => "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
72         'meta-spec'  => {
73             url         => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 
74             version     => 1.4
75         },
76     ], 'rt.cpan.org 39348';
77 }
78
79
80 {
81     my $mm = $new_mm->(
82         DISTNAME        => 'Foo-Bar',
83         VERSION         => 1.23,
84         AUTHOR          => 'Some Guy',
85         PREREQ_PM       => {
86             Foo                 => 2.34,
87             Bar                 => 4.56,
88         },
89     );
90
91     is_deeply [$mm->metafile_data(
92         {
93             configure_requires => {
94                 Stuff   => 2.34
95             },
96             wobble      => 42
97         },
98         {
99             no_index    => {
100                 package => "Thing"
101             },
102             wibble      => 23
103         },
104     )],
105     [
106         name            => 'Foo-Bar',
107         version         => 1.23,
108         abstract        => undef,
109         author          => ['Some Guy'],
110         license         => 'unknown',
111         distribution_type       => 'script',
112
113         configure_requires      => {
114             Stuff       => 2.34,
115         },
116         build_requires      => {
117             'ExtUtils::MakeMaker'       => 0,
118         },
119
120         requires       => {
121             Foo                 => 2.34,
122             Bar                 => 4.56,
123         },
124
125         no_index        => {
126             directory           => [qw(t inc)],
127             package             => 'Thing',
128         },
129
130         generated_by => "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
131         'meta-spec'  => {
132             url         => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 
133             version     => 1.4
134         },
135
136         wibble  => 23,
137         wobble  => 42,
138     ];
139 }
140
141
142 # Test MIN_PERL_VERSION
143 {
144     my $mm = $new_mm->(
145         DISTNAME        => 'Foo-Bar',
146         VERSION         => 1.23,
147         PM              => {
148             "Foo::Bar"          => 'lib/Foo/Bar.pm',
149         },
150         MIN_PERL_VERSION => 5.006,
151     );
152
153     is_deeply [$mm->metafile_data], [
154         name            => 'Foo-Bar',
155         version         => 1.23,
156         abstract        => undef,
157         author          => [],
158         license         => 'unknown',
159         distribution_type       => 'module',
160
161         configure_requires      => {
162             'ExtUtils::MakeMaker'       => 0,
163         },
164         build_requires      => {
165             'ExtUtils::MakeMaker'       => 0,
166         },
167
168         requires        => {
169             perl        => '5.006',
170         },
171
172         no_index        => {
173             directory           => [qw(t inc)],
174         },
175
176         generated_by => "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
177         'meta-spec'  => {
178             url         => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 
179             version     => 1.4
180         },
181     ];
182 }
183
184
185 # Test MIN_PERL_VERSION
186 {
187     my $mm = $new_mm->(
188         DISTNAME        => 'Foo-Bar',
189         VERSION         => 1.23,
190         PM              => {
191             "Foo::Bar"          => 'lib/Foo/Bar.pm',
192         },
193         MIN_PERL_VERSION => 5.006,
194         PREREQ_PM => {
195             'Foo::Bar'  => 1.23,
196         },
197     );
198
199     is_deeply [$mm->metafile_data], [
200         name            => 'Foo-Bar',
201         version         => 1.23,
202         abstract        => undef,
203         author          => [],
204         license         => 'unknown',
205         distribution_type       => 'module',
206
207         configure_requires      => {
208             'ExtUtils::MakeMaker'       => 0,
209         },
210         build_requires      => {
211             'ExtUtils::MakeMaker'       => 0,
212         },
213
214         requires        => {
215             perl        => '5.006',
216             'Foo::Bar'  => 1.23,
217         },
218
219         no_index        => {
220             directory           => [qw(t inc)],
221         },
222
223         generated_by => "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
224         'meta-spec'  => {
225             url         => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 
226             version     => 1.4
227         },
228     ];
229 }
230
231 # Test CONFIGURE_REQUIRES
232 {
233     my $mm = $new_mm->(
234         DISTNAME        => 'Foo-Bar',
235         VERSION         => 1.23,
236         CONFIGURE_REQUIRES => {
237             "Fake::Module1" => 1.01,
238         },
239         PM              => {
240             "Foo::Bar"          => 'lib/Foo/Bar.pm',
241         },
242     );
243
244     is_deeply [$mm->metafile_data], [
245         name            => 'Foo-Bar',
246         version         => 1.23,
247         abstract        => undef,
248         author          => [],
249         license         => 'unknown',
250         distribution_type       => 'module',
251
252         configure_requires      => {
253             'Fake::Module1'       => 1.01,
254         },
255         build_requires      => {
256             'ExtUtils::MakeMaker'       => 0,
257         },
258
259         no_index        => {
260             directory           => [qw(t inc)],
261         },
262
263         generated_by => "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
264         'meta-spec'  => {
265             url         => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 
266             version     => 1.4
267         },
268     ],'CONFIGURE_REQUIRES';
269 }
270
271 # Test BUILD_REQUIRES
272 {
273     my $mm = $new_mm->(
274         DISTNAME        => 'Foo-Bar',
275         VERSION         => 1.23,
276         BUILD_REQUIRES => {
277             "Fake::Module1" => 1.01,
278         },
279         PM              => {
280             "Foo::Bar"          => 'lib/Foo/Bar.pm',
281         },
282     );
283
284     is_deeply [$mm->metafile_data], [
285         name            => 'Foo-Bar',
286         version         => 1.23,
287         abstract        => undef,
288         author          => [],
289         license         => 'unknown',
290         distribution_type       => 'module',
291
292         configure_requires      => {
293             'ExtUtils::MakeMaker'       => 0,
294         },
295         build_requires      => {
296             'Fake::Module1'       => 1.01,
297         },
298
299         no_index        => {
300             directory           => [qw(t inc)],
301         },
302
303         generated_by => "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
304         'meta-spec'  => {
305             url         => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 
306             version     => 1.4
307         },
308     ],'CONFIGURE_REQUIRES';
309 }