my $version = shift;
my $isbinary = shift;
return unless defined $version;
- undef $package if $package =~ m[(?:\s|/)];
- my $source = $package;
-
- if (defined $package and $isbinary) {
- my @srcinfo = binarytosource($package, $version, undef);
- if (@srcinfo) {
- # We know the source package(s). Use a fully-qualified version.
- removefixedversions($data, $_->[0], $_->[1], '') foreach @srcinfo;
- return;
- }
- # Otherwise, an unqualified version will have to do.
- undef $source;
- }
foreach my $ver (split /[,\s]+/, $version) {
- my $sver = defined($source) ? "$source/$ver" : '';
- @{$data->{fixed_versions}} =
- grep { $_ ne $ver and $_ ne $sver } @{$data->{fixed_versions}};
+ if ($ver =~ m{/}) {
+ # fully qualified version
+ @{$data->{fixed_versions}} =
+ grep {$_ ne $ver}
+ @{$data->{fixed_versions}};
+ }
+ else {
+ # non qualified version; delete all matchers
+ @{$data->{fixed_versions}} =
+ grep {$_ !~ m[(?:^|/)\Q$ver\E$]}
+ @{$data->{fixed_versions}};
+ }
}
}
# -*- mode: cperl;-*-
-use Test::More tests => 3;
+use Test::More tests => 5;
use warnings;
use strict;
$data = dclone(\%data);
removefoundversions($data,$data->{package},'bar/1.00');
is_deeply($data->{found_versions},['1.00','1.34'],'removefoundversions removes only bar/1.00 versions');
+$data = dclone(\%data);
+addfoundversions($data,$data->{package},'1.45');
+is_deeply($data->{fixed_versions},['bar/1.02'],'addfoundversions removes fixed versions');
+is_deeply($data->{found_versions},['bar/1.00',
+ '1.00',
+ '1.34',
+ 'foo/1.45',
+ ],,'addfoundversions adds found versions');