From 2caa11e2c67b79167de43f4a0ae8ba922d29e928 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Tue, 17 Jul 2007 01:55:43 -0700 Subject: [PATCH] * Remove fixed versions should remove all versions which match and not try to figure out the source package. --- Debbugs/Status.pm | 28 ++++++++++++---------------- t/03_versions.t | 10 +++++++++- 2 files changed, 21 insertions(+), 17 deletions(-) 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'); -- 2.39.2