1BEGIN { 2 unshift @INC, 't/lib'; 3} 4 5use strict; 6use Test::More tests => 7; 7 8use Data::Dumper; 9 10require ExtUtils::MM_Any; 11 12my $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} 310