Test-CVE
view release on metacpan or search on metacpan
lib/Test/CVE.pm view on Meta::CPAN
$self->{verbose} and warn "Reading $mf ...\n";
open my $fh, "<", $mf or return $self;
my $mfc = do { local $/; <$fh> };
close $fh;
$mfc or return $self;
my ($pv, $release, $nm, $v, $vf) = ("");
foreach my $mfx (grep { m/=>/ }
map { split m/\s*[;(){}]\s*/ }
map { split m/\s*,(?!\s*=>)/ }
split m/[,;]\s*(?:#.*)?\r*\n/ => $mfc) {
$mfx =~ s/[\s\r\n]+/ /g;
$mfx =~ s/^\s+//;
$mfx =~ s/^(['"])(.*?)\1/$2/; # Unquote key
my $a = qr{\s* (?:,\s*)? => \s* (?|"([^""]*)"|'([^'']*)'|([-\w.]+))}x;
$mfx =~ m/^ VERSION $a /ix and $v //= $1;
$mfx =~ m/^ VERSION_FROM $a /ix and $vf //= $1;
$mfx =~ m/^ NAME $a /ix and $nm //= $1;
$mfx =~ m/^ DISTNAME $a /ix and $release //= $1;
$mfx =~ m/^ MIN_PERL_VERSION $a /ix and $pv ||= $1;
}
t/30_makefile.t view on Meta::CPAN
ok (my $cve = Test::CVE->new, "New");
my $exp = {
name => "Foo",
release => "Foo",
version => "1.23",
mpv => "5.014000",
};
foreach my $mf (split m/##\n/ => do { local $/; <DATA> }) {
delete $cve->{mf};
$cve->_read_MakefilePL (\$mf);
is_deeply ($cve->{mf}, $exp, "Correctly parsed");
}
done_testing;
__END__
use 5.14;
WriteMakeFile (
NAME => "Foo",
( run in 0.823 second using v1.01-cache-2.11-cpan-71847e10f99 )