From: Don Armstrong Date: Tue, 17 Jul 2007 08:55:43 +0000 (-0700) Subject: * Remove fixed versions should remove all versions which match and X-Git-Tag: release/2.6.0~524^2 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2caa11e2c67b79167de43f4a0ae8ba922d29e928;hp=f0824340b2a8440e4c81079bcf2c82a4f9593a91;p=debbugs.git * Remove fixed versions should remove all versions which match and not try to figure out the source package. --- diff --git a/Debbugs/Status.pm b/Debbugs/Status.pm index 6c44823..b4baa48 100644 --- a/Debbugs/Status.pm +++ b/Debbugs/Status.pm @@ -529,24 +529,20 @@ sub removefixedversions { 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}}; + } } } diff --git a/t/03_versions.t b/t/03_versions.t index 1a9af80..3a7beb4 100644 --- a/t/03_versions.t +++ b/t/03_versions.t @@ -1,6 +1,6 @@ # -*- mode: cperl;-*- -use Test::More tests => 3; +use Test::More tests => 5; use warnings; use strict; @@ -28,3 +28,11 @@ is_deeply($data->{found_versions},['1.34'],'removefoundversions removes all 1.00 $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');