xref: /openbsd-src/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/meta_convert.t (revision 9f11ffb7133c203312a01e4b986886bc88c7d74b)
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