]> git.donarmstrong.com Git - debbugs.git/commitdiff
fix Debbugs::Status for the errorlib changes; fix 03_versions.t
authorDon Armstrong <don@volo>
Tue, 21 Nov 2006 07:59:30 +0000 (23:59 -0800)
committerDon Armstrong <don@volo>
Tue, 21 Nov 2006 07:59:30 +0000 (23:59 -0800)
Debbugs/Status.pm
t/03_versions.t

index 58a7e65a63052034c4e3e872a9e98cb577988a57..cffd958291cba0190cc2036c8db11f4cf9e0a496 100644 (file)
@@ -46,6 +46,7 @@ BEGIN{
                     read   => [qw(readbug read_bug lockreadbug)],
                     write  => [qw(writebug makestatus unlockwritebug)],
                     versions => [qw(addfoundversion addfixedversion),
+                                 qw(removefoundversions)
                                 ],
                    );
      @EXPORT_OK = ();
@@ -388,33 +389,45 @@ sub addfoundversions {
     }
 }
 
+=head2 removefoundversions
+
+     removefoundversions($data,$package,$versiontoremove)
+
+Removes found versions from $data
+
+If a version is fully qualified (contains /) only versions matching
+exactly are removed. Otherwise, all versions matching the version
+number are removed.
+
+Currently $package and $isbinary are entirely ignored, but accepted
+for backwards compatibilty.
+
+=cut
+
 sub removefoundversions {
     my $data = shift;
     my $package = shift;
     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.
-            removefoundversions($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->{found_versions}} =
-            grep { $_ ne $ver and $_ ne $sver } @{$data->{found_versions}};
+        if ($ver =~ m{/}) {
+             # fully qualified version
+             @{$data->{found_versions}} =
+                  grep {$_ ne $ver}
+                       @{$data->{found_versions}};
+        }
+        else {
+             # non qualified version; delete all matchers
+             @{$data->{found_versions}} =
+                  grep {$_ !~ m[(?:^|/)\Q$ver\E$]}
+                       @{$data->{found_versions}};
+        }
     }
 }
 
+
 sub addfixedversions {
     my $data = shift;
     my $package = shift;
index ace98ce7709c61560a63dc032e96edec07f1692c..1a9af80905b557bfdaf4496ba77d93e117c1c5f7 100644 (file)
@@ -20,7 +20,7 @@ my %data = (package => q(foo),
           );
 
 
-require_ok('scripts/errorlib.in');
+use_ok('Debbugs::Status',qw(:versions));
 # check removefoundversions
 my $data = dclone(\%data);
 removefoundversions($data,$data->{package},'1.00');