]> git.donarmstrong.com Git - debbugs.git/commitdiff
add affects support and tests for affects
authorDon Armstrong <don@donarmstrong.com>
Sat, 9 Aug 2008 23:27:13 +0000 (16:27 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sat, 9 Aug 2008 23:27:13 +0000 (16:27 -0700)
scripts/service
t/06_mail_handling.t

index da0819ac6e69da721b4f23487c4fd6b71506cbcf..52540ef43bebeeaa7e0dd4893f455d21c905ccee 100755 (executable)
@@ -1013,6 +1013,8 @@ END
            &checkmatch('blocked-by','m_blockedby',$data->{blockedby},@newmergelist);
            &checkmatch('done mark','m_done',length($data->{done}) ? 'done' : 'open',@newmergelist);
            &checkmatch('owner','m_owner',$data->{owner},@newmergelist);
+           &checkmatch('summary','m_summary',$data->{summary},@newmergelist);
+           &checkmatch('affects','m_affects',$data->{affects},@newmergelist);
            foreach my $t (split /\s+/, $data->{keywords}) { $tags{$t} = 1; }
            foreach my $f (@{$data->{found_versions}}) { $found{$f} = 1; }
            foreach my $f (@{$data->{fixed_versions}}) { $fixed{$f} = 1; }
@@ -1101,7 +1103,7 @@ END
                $data->{keywords}= join(' ', keys %tags);
                $data->{found_versions}= [sort keys %found];
                $data->{fixed_versions}= [sort keys %fixed];
-               my @field_list = qw(forwarded package severity blocks blockedby owner done);
+               my @field_list = qw(forwarded package severity blocks blockedby owner done affects summary);
                @{$data}{@field_list} = @{$master_bug_data}{@field_list};
                &savebug;
            }
@@ -1184,6 +1186,31 @@ END
                %limit_pkgs = ();
                print {$transcript} "Not ignoring any bugs.\n\n";
        }
+    } elsif (m/^affects?\s+\#?(-?\d+)(?:\s+((?:[=+-])?)\s*(\S.*)?)?\s*$/i) {
+       $ok++;
+        $ref = $1;
+       my $add_remove = $2 || '';
+       my $packages = $3 || '';
+       $ref = $clonebugs{$ref} if exists $clonebugs{$ref};
+       $bug_affected{$ref} = 1;
+       eval {
+            affects(bug          => $ref,
+                    transcript   => $transcript,
+                    ($dl > 0 ? (debug => $transcript):()),
+                    requester    => $header{from},
+                    request_addr => $controlrequestaddr,
+                    message      => \@log,
+                    recipients   => \%recipients,
+                    packages     => [splitpackages($3)],
+                    ($add_remove eq '+'?(add => 1):()),
+                    ($add_remove eq '-'?(remove => 1):()),
+                   );
+       };
+       if ($@) {
+           $errors++;
+           print {$transcript} "Failed to give $ref a summary: $@";
+       }
+
     } elsif (m/^summary\s+\#?(-?\d+)\s*(\d+|)\s*$/i) {
        $ok++;
         $ref = $1;
index b188a99e407a616c29075f96f4197be287d03430..857c97c1d1b668a9228336546356672f442c32b1 100644 (file)
@@ -1,7 +1,7 @@
 # -*- mode: cperl;-*-
 # $Id: 05_mail.t,v 1.1 2005/08/17 21:46:17 don Exp $
 
-use Test::More tests => 72;
+use Test::More tests => 78;
 
 use warnings;
 use strict;
@@ -206,6 +206,16 @@ my @control_commands =
                       status_key => 'summary',
                       status_value => '',
                      },
+      affects      => {command => 'affects',
+                      value   => 'foo',
+                      status_key => 'affects',
+                      status_value => 'foo',
+                     },
+      noaffects    => {command => 'affects',
+                      value   => '',
+                      status_key => 'affects',
+                      status_value => '',
+                     },
       close        => {command => 'close',
                       value   => '',
                       status_key => 'done',