]> git.donarmstrong.com Git - debbugs.git/commitdiff
* Clean up removefoundversions and add tests for the new functionality
authorDon Armstrong <don@volo>
Mon, 6 Nov 2006 09:17:20 +0000 (01:17 -0800)
committerDon Armstrong <don@volo>
Mon, 6 Nov 2006 09:17:20 +0000 (01:17 -0800)
scripts/errorlib.in
t/03_versions.t [new file with mode: 0644]

index d26381e693012a2ebca1a4067dd4ef5efb2d521c..fb32ba133e52387747708528159ffe634374e50b 100755 (executable)
@@ -299,30 +299,41 @@ 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}};
+        }
     }
 }
 
diff --git a/t/03_versions.t b/t/03_versions.t
new file mode 100644 (file)
index 0000000..ace98ce
--- /dev/null
@@ -0,0 +1,30 @@
+# -*- mode: cperl;-*-
+
+use Test::More tests => 3;
+
+use warnings;
+use strict;
+
+use Storable qw(dclone);
+
+# First, lets create a dataset for the illustrious foo package
+
+my %data = (package => q(foo),
+           found_versions   => ['bar/1.00',
+                                '1.00',
+                                '1.34',
+                               ],
+           fixed_versions   => ['bar/1.02',
+                                '1.45',
+                               ],
+          );
+
+
+require_ok('scripts/errorlib.in');
+# check removefoundversions
+my $data = dclone(\%data);
+removefoundversions($data,$data->{package},'1.00');
+is_deeply($data->{found_versions},['1.34'],'removefoundversions removes all 1.00 versions');
+$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');