]> git.donarmstrong.com Git - debbugs.git/commitdiff
* Remove fixed versions should remove all versions which match and
authorDon Armstrong <don@donarmstrong.com>
Tue, 17 Jul 2007 08:55:43 +0000 (01:55 -0700)
committerDon Armstrong <don@donarmstrong.com>
Tue, 17 Jul 2007 08:55:43 +0000 (01:55 -0700)
   not try to figure out the source package.

Debbugs/Status.pm
t/03_versions.t

index 6c44823a0d11bc32593b2a746a719e2f4fd28e2d..b4baa4842c513098ae35f71f58adb745c4247639 100644 (file)
@@ -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}};
+        }
     }
 }
 
index 1a9af80905b557bfdaf4496ba77d93e117c1c5f7..3a7beb44dfae90bf620f3e626086bb9fb0f27ccf 100644 (file)
@@ -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');