1*9f11ffb7Safresh1#!perl -w 2898184e3Ssthen 3898184e3Ssthenuse strict; 4898184e3Ssthenuse warnings; 5898184e3Ssthen 6*9f11ffb7Safresh1BEGIN { unshift @INC, 't/lib'; } 7*9f11ffb7Safresh1use Test::More eval { require CPAN::Meta; CPAN::Meta->VERSION(2.143240) } ? () 8*9f11ffb7Safresh1 : (skip_all => 'CPAN::Meta 2.143240 required for this test'); 9*9f11ffb7Safresh1use File::Temp qw[tempdir]; 10898184e3Ssthenrequire ExtUtils::MM_Any; 11898184e3Ssthen 12*9f11ffb7Safresh1my $tmpdir = tempdir( DIR => 't', CLEANUP => 1 ); 13*9f11ffb7Safresh1use Cwd; my $cwd = getcwd; END { chdir $cwd } # so File::Temp can cleanup 14*9f11ffb7Safresh1chdir $tmpdir or die "chdir $tmpdir: $!"; 15898184e3Ssthen 16*9f11ffb7Safresh1my $EMPTY = qr/['"]?version['"]?\s*:\s*['"]['"]/; 17*9f11ffb7Safresh1my @DATA = ( 18*9f11ffb7Safresh1 [ 19*9f11ffb7Safresh1 [ DISTNAME => 'Net::FTP::Recursive', VERSION => 'Recursive.pm', ], 20*9f11ffb7Safresh1 qr{Can't parse version 'Recursive.pm'}, 21*9f11ffb7Safresh1 'VERSION => filename', 22*9f11ffb7Safresh1 $EMPTY, 23*9f11ffb7Safresh1 ], 24*9f11ffb7Safresh1 [ 25*9f11ffb7Safresh1 [ DISTNAME => 'Image::Imgur', VERSION => 'undef', ], 26*9f11ffb7Safresh1 qr{Can't parse version 'undef'}, 27*9f11ffb7Safresh1 'no $VERSION in file -> VERSION=>"undef"', 28*9f11ffb7Safresh1 $EMPTY, 29*9f11ffb7Safresh1 ], 30*9f11ffb7Safresh1 [ 31*9f11ffb7Safresh1 [ DISTNAME => 'SQL::Library', VERSION => 0.0.3, ], 32*9f11ffb7Safresh1 qr{Can't parse version '\x00\x00\x03'}, 33*9f11ffb7Safresh1 "x.y.z version", 34*9f11ffb7Safresh1 $EMPTY, 35*9f11ffb7Safresh1 ], 36*9f11ffb7Safresh1 [ 37*9f11ffb7Safresh1 [ DISTNAME => 'Array::Suffix', VERSION => '.5', ], 38*9f11ffb7Safresh1 qr{Can't parse version '.5'}, 39*9f11ffb7Safresh1 ".5 version", 40*9f11ffb7Safresh1 $EMPTY, 41*9f11ffb7Safresh1 ], 42*9f11ffb7Safresh1 [ 43*9f11ffb7Safresh1 [ 44898184e3Ssthen DISTNAME => 'Attribute::Signature', 45898184e3Ssthen META_MERGE => { 46898184e3Ssthen resources => { 47898184e3Ssthen repository => 'http://github.com/chorny/Attribute-Signature', 48898184e3Ssthen 'Repository-clone' => 'git://github.com/chorny/Attribute-Signature.git', 49898184e3Ssthen }, 50898184e3Ssthen }, 51*9f11ffb7Safresh1 ], 52*9f11ffb7Safresh1 qr/^$/, 53*9f11ffb7Safresh1 "Non-camel case metadata", 54*9f11ffb7Safresh1 qr/x_Repositoryclone/, 55*9f11ffb7Safresh1 ], 56*9f11ffb7Safresh1 [ 57*9f11ffb7Safresh1 [ 58898184e3Ssthen DISTNAME => 'CPAN::Testers::ParseReport', 59898184e3Ssthen VERSION => '2.34', 60898184e3Ssthen META_ADD => { 61898184e3Ssthen provides => { 62898184e3Ssthen "CPAN::Testers::ParseReport" => { 63b8851fccSafresh1 version => version->new("v1.2.3"), 64898184e3Ssthen file => "lib/CPAN/Testers/ParseReport.pm" 65898184e3Ssthen } 66898184e3Ssthen } 67898184e3Ssthen }, 68*9f11ffb7Safresh1 ], 69*9f11ffb7Safresh1 qr/^$/, 70*9f11ffb7Safresh1 "version object in provides", 71*9f11ffb7Safresh1 qr/['"]?version['"]?\s*:\s*['"]v1\.2\.3['"]/, 72*9f11ffb7Safresh1 ], 73*9f11ffb7Safresh1 [ 74*9f11ffb7Safresh1 [ 75*9f11ffb7Safresh1 DISTNAME => 'Bad::License', 76*9f11ffb7Safresh1 VERSION => '2.34', 77*9f11ffb7Safresh1 LICENSE => 'death and retribution', 78*9f11ffb7Safresh1 ], 79*9f11ffb7Safresh1 qr/Invalid LICENSE value/, 80*9f11ffb7Safresh1 "Bad licence warns", 81*9f11ffb7Safresh1 qr/['"]?version['"]?\s*:\s*['"]2\.34['"]/, 82*9f11ffb7Safresh1 ], 83898184e3Ssthen); 84*9f11ffb7Safresh1 85*9f11ffb7Safresh1plan tests => 3 * @DATA; 86*9f11ffb7Safresh1run_test(@$_) for @DATA; 87*9f11ffb7Safresh1 88*9f11ffb7Safresh1sub ExtUtils::MM_Any::quote_literal { $_[1] } 89*9f11ffb7Safresh1 90*9f11ffb7Safresh1sub run_test { 91*9f11ffb7Safresh1 my ($mmargs, $expected, $label, $metadata_re) = @_; 92*9f11ffb7Safresh1 my $mm = bless { ARGS => {@$mmargs}, @$mmargs }, 'ExtUtils::MM_Any'; 93*9f11ffb7Safresh1 my @warnings; 94*9f11ffb7Safresh1 my $ret; 95*9f11ffb7Safresh1 { 96*9f11ffb7Safresh1 local $SIG{__WARN__} = sub { push @warnings, @_ }; 97*9f11ffb7Safresh1 eval { $ret = $mm->metafile_target; }; 98*9f11ffb7Safresh1 } 99*9f11ffb7Safresh1 SKIP: { 100*9f11ffb7Safresh1 if ($@) { 101*9f11ffb7Safresh1 diag $@; 102*9f11ffb7Safresh1 skip "$label got exception", 3 if $@; 103*9f11ffb7Safresh1 } 104*9f11ffb7Safresh1 ok 1, "$label metafile_target"; 105*9f11ffb7Safresh1 like join("", @warnings), $expected, "$label right warning"; 106*9f11ffb7Safresh1 like $ret, $metadata_re, "$label metadata"; 107*9f11ffb7Safresh1 } 108898184e3Ssthen} 109