From 8c234479f7fbe6cbfd827e91eb054d1ae7f8dd09 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Sat, 9 Aug 2008 16:27:13 -0700 Subject: [PATCH] add affects support and tests for affects --- scripts/service | 29 ++++++++++++++++++++++++++++- t/06_mail_handling.t | 12 +++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/scripts/service b/scripts/service index da0819a..52540ef 100755 --- a/scripts/service +++ b/scripts/service @@ -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; diff --git a/t/06_mail_handling.t b/t/06_mail_handling.t index b188a99..857c97c 100644 --- a/t/06_mail_handling.t +++ b/t/06_mail_handling.t @@ -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', -- 2.39.2