From a43e8f549071d81f6865486cf197ad78a8b7f5b8 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Mon, 19 Mar 2007 00:31:43 -0700 Subject: [PATCH] add fixed and notfixed commands --- Debbugs/Config.pm | 28 +++++++++++++++++++++++++++ Debbugs/Status.pm | 2 +- scripts/service.in | 45 ++++++++++++++++++++++++++++++++++++++++---- t/06_mail_handling.t | 12 +++++++++++- 4 files changed, 81 insertions(+), 6 deletions(-) diff --git a/Debbugs/Config.pm b/Debbugs/Config.pm index 9b2792a..68dd507 100644 --- a/Debbugs/Config.pm +++ b/Debbugs/Config.pm @@ -348,6 +348,34 @@ set_default(\%config,'removal_default_distribution_tags', [qw(unstable testing)] ); +=item package_name_re + +The regex which will match a package name + +Default: '[a-z0-9][a-z0-9\.+-]+' + +=cut + +set_default(\%config,'package_name_re', + '[a-z0-9][a-z0-9\.+-]+'); + +=item package_version_re + +The regex which will match a package version + +Default: '[A-Za-z0-9:+\.-]+' + +=cut + +set_default(\%config,'package_version_re', + '[A-Za-z0-9:+\.-]+'); + + + + + + + set_default(\%config,'default_severity','normal'); set_default(\%config,'show_severities','critical, grave, normal, minor, wishlist'); set_default(\%config,'strong_severities',[qw(critical grave)]); diff --git a/Debbugs/Status.pm b/Debbugs/Status.pm index c78e585..22d8183 100644 --- a/Debbugs/Status.pm +++ b/Debbugs/Status.pm @@ -48,7 +48,7 @@ BEGIN{ read => [qw(readbug read_bug lockreadbug)], write => [qw(writebug makestatus unlockwritebug)], versions => [qw(addfoundversions addfixedversions), - qw(removefoundversions) + qw(removefoundversions removefixedversions) ], hook => [qw(bughook bughook_archive)], ); diff --git a/scripts/service.in b/scripts/service.in index e5074d3..d4e8e98 100755 --- a/scripts/service.in +++ b/scripts/service.in @@ -11,7 +11,7 @@ use Debbugs::Mail qw(send_mail_message); use Debbugs::User; use HTML::Entities qw(encode_entities); -use Debbugs::Config qw(:globals); +use Debbugs::Config qw(:globals :config); use Debbugs::CGI qw(html_escape); $lib_path = $gLibPath; require "$lib_path/errorlib"; @@ -507,7 +507,9 @@ END } while (&getnextbug); } } - } elsif (m/^found\s+\#?(-?\d+)(?:\s+(\d.*))?$/i) { + } elsif (m{^found\s+\#?(-?\d+) + (?:\s+(?:$config{package_name_re}\/)? + ($config{package_version_re}))?$}ix) { $ok++; $ref= $1; $version= $2; @@ -560,8 +562,43 @@ END &addmaintainers($data); removefoundversions($data, $data->{package}, $version, 'binary'); } while (&getnextbug); - } - } elsif (m/^submitter\s+\#?(-?\d+)\s+\!$/i ? ($newsubmitter=$replyto, 1) : + } + } + elsif (m[^fixed\s+\#?(-?\d+)\s+ + ((?:$config{package_name_re}\/)? + $config{package_version_re})\s*$]ix) { + $ok++; + $ref= $1; + $version= $2; + if (&setbug) { + $action= + defined($version) ? + "$gBug marked as fixed in version $version." : + "$gBug reopened."; + do { + &addmaintainers($data); + addfixedversions($data, $data->{package}, $version, 'binary'); + } while (&getnextbug); + } + } + elsif (m[^notfixed\s+\#?(-?\d+)\s+ + ((?:$config{package_name_re}\/)? + $config{package_version_re})\s*$]ix) { + $ok++; + $ref= $1; + $version= $2; + if (&setbug) { + $action= + defined($version) ? + "$gBug marked as not fixed in version $version." : + "$gBug reopened."; + do { + &addmaintainers($data); + removefixedversions($data, $data->{package}, $version, 'binary'); + } while (&getnextbug); + } + } + elsif (m/^submitter\s+\#?(-?\d+)\s+\!$/i ? ($newsubmitter=$replyto, 1) : m/^submitter\s+\#?(-?\d+)\s+(\S.*\S)$/i ? ($newsubmitter=$2, 1) : 0) { $ok++; $ref= $1; diff --git a/t/06_mail_handling.t b/t/06_mail_handling.t index c5be847..01d4bc0 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 => 31; +use Test::More tests => 37; use warnings; use strict; @@ -135,6 +135,16 @@ my @control_commands = status_key => 'found_versions', status_value => [], }, + 'fixed_1.1' => {command => 'fixed', + value => '1.1', + status_key => 'fixed_versions', + status_value => ['1.1'], + }, + 'notfixed_1.1' => {command => 'notfixed', + value => '1.1', + status_key => 'fixed_versions', + status_value => [], + }, submitter_foo => {command => 'submitter', value => 'foo@bar.com', status_key => 'originator', -- 2.39.2