------------------------------------------------------------ revno: 883 committer: Debian BTS <[EMAIL PROTECTED]> branch nick: debian timestamp: Sun 2008-08-10 15:38:53 +0000 message: merge changes from don ------------------------------------------------------------ revno: 721.1.13.1.1.2.2.1.1.1.437 merged: [EMAIL PROTECTED] committer: Don Armstrong <[EMAIL PROTECTED]> branch nick: source timestamp: Sun 2008-08-10 08:37:49 -0700 message: add missing comma in Debbugs/Control; add test for expire
=== added file 't/10_expire.t' --- t/10_expire.t 1970-01-01 00:00:00 +0000 +++ t/10_expire.t 2008-08-10 15:38:51 +0000 @@ -0,0 +1,188 @@ +# -*- mode: cperl;-*- +# + +use Test::More tests => 21; + +use warnings; +use strict; + +# Here, we're going to shoot messages through a set of things that can +# happen. + +# First, we're going to send mesages to receive. +# To do so, we'll first send a message to submit, +# then send messages to the newly created bugnumber. + +use IO::File; +use File::Temp qw(tempdir); +use Cwd qw(getcwd); +use Debbugs::MIME qw(create_mime_message); +use File::Basename qw(dirname basename); +# The test functions are placed here to make things easier +use lib qw(t/lib); +use DebbugsTest qw(:all); +use Data::Dumper; + +# HTTP::Server:::Simple defines a SIG{CHLD} handler that breaks system; undef it here. +$SIG{CHLD} = sub {}; +my %config; +eval { + %config = create_debbugs_configuration(debug => exists $ENV{DEBUG}?$ENV{DEBUG}:0); +}; +if ($@) { + BAIL_OUT($@); +} + +my $sendmail_dir = $config{sendmail_dir}; +my $spool_dir = $config{spool_dir}; +my $config_dir = $config{config_dir}; + +END{ + if ($ENV{DEBUG}) { + diag("spool_dir: $spool_dir\n"); + diag("config_dir: $config_dir\n"); + diag("sendmail_dir: $sendmail_dir\n"); + } +} + +# We're going to use create mime message to create these messages, and +# then just send them to receive. + +send_message(to=>'[EMAIL PROTECTED]', + headers => [To => '[EMAIL PROTECTED]', + From => '[EMAIL PROTECTED]', + Subject => 'Submiting a bug', + ], + body => <<EOF) or fail('Unable to send message'); +Package: foo +Severity: normal + +This is a silly bug +EOF + +# now we check to see that we have a bug, and nextnumber has been incremented +ok(-e "$spool_dir/db-h/01/1.log",'log file created'); +ok(-e "$spool_dir/db-h/01/1.summary",'sumary file created'); +ok(-e "$spool_dir/db-h/01/1.status",'status file created'); +ok(-e "$spool_dir/db-h/01/1.report",'report file created'); + +# next, we check to see that (at least) the proper messages have been +# sent out. 1) ack to submitter 2) mail to maintainer + +# This keeps track of the previous size of the sendmail directory +my $SD_SIZE_PREV = 0; +my $SD_SIZE_NOW = dirsize($sendmail_dir); +ok($SD_SIZE_NOW-$SD_SIZE_PREV >= 2,'submit messages appear to have been sent out properly'); +$SD_SIZE_PREV=$SD_SIZE_NOW; + +# now send a message to the bug + +send_message(to => '[EMAIL PROTECTED]', + headers => [To => '[EMAIL PROTECTED]', + From => '[EMAIL PROTECTED]', + Subject => 'Sending a message to a bug', + ], + body => <<EOF) or fail('sending message to [EMAIL PROTECTED] failed'); +Package: foo +Severity: normal + +This is a silly bug +EOF + +$SD_SIZE_NOW = dirsize($sendmail_dir); +ok($SD_SIZE_NOW-$SD_SIZE_PREV >= 2,'[EMAIL PROTECTED] messages appear to have been sent out properly'); +$SD_SIZE_PREV=$SD_SIZE_NOW; + +# just check to see that control doesn't explode +send_message(to => '[EMAIL PROTECTED]', + headers => [To => '[EMAIL PROTECTED]', + From => '[EMAIL PROTECTED]', + Subject => 'Munging a bug', + ], + body => <<EOF) or fail 'message to [EMAIL PROTECTED] failed'; +severity 1 wishlist +retitle 1 new title +thanks +EOF + +$SD_SIZE_NOW = dirsize($sendmail_dir); +ok($SD_SIZE_NOW-$SD_SIZE_PREV >= 1,'[EMAIL PROTECTED] messages appear to have been sent out properly'); +$SD_SIZE_PREV=$SD_SIZE_NOW; +# now we need to check to make sure the control message was processed without errors +ok(system('sh','-c','find '.$sendmail_dir.q( -type f | xargs grep -q "Subject: Processed: Munging a bug")) == 0, + '[EMAIL PROTECTED] message was parsed without errors'); +# now we need to check to make sure that the control message actually did anything +# This is an eval because $ENV{DEBBUGS_CONFIG_FILE} isn't set at BEGIN{} time +eval "use Debbugs::Status qw(read_bug writebug);"; +my $status = read_bug(bug=>1); +ok($status->{subject} eq 'new title','bug 1 retitled'); +ok($status->{severity} eq 'wishlist','bug 1 wishlisted'); + +# now we're going to go through and methododically test all of the control commands. +my @control_commands = + (close => {command => 'close', + value => '', + status_key => 'done', + status_value => '[EMAIL PROTECTED]', + }, + archive => {command => 'archive', + value => '', + status_key => 'owner', + status_value => '', + location => 'archive', + }, + unarchive => {command => 'unarchive', + value => '', + status_key => 'owner', + status_value => '', + }, + ); + +# In order for the archive/unarchive to work, we have to munge the summary file slightly +$status = read_bug(bug => 1); +$status->{unarchived} = time; +writebug(1,$status); +while (my ($command,$control_command) = splice(@control_commands,0,2)) { + # just check to see that control doesn't explode + $control_command->{value} = " $control_command->{value}" if length $control_command->{value} + and $control_command->{value} !~ /^\s/; + send_message(to => '[EMAIL PROTECTED]', + headers => [To => '[EMAIL PROTECTED]', + From => '[EMAIL PROTECTED]', + Subject => "Munging a bug with $command", + ], + body => <<EOF) or fail 'message to [EMAIL PROTECTED] failed'; +debug 10 +$control_command->{command} 1$control_command->{value} +thanks +EOF + ; + $SD_SIZE_NOW = dirsize($sendmail_dir); + ok($SD_SIZE_NOW-$SD_SIZE_PREV >= 1,'[EMAIL PROTECTED] messages appear to have been sent out properly'); + $SD_SIZE_PREV=$SD_SIZE_NOW; + # now we need to check to make sure the control message was processed without errors + ok(system('sh','-c','find '.$sendmail_dir.q( -type f | xargs grep -q "Subject: Processed: Munging a bug with $command")) == 0, + '[EMAIL PROTECTED]'. "$command message was parsed without errors"); + # now we need to check to make sure that the control message actually did anything + my $status; + $status = read_bug(bug=>1, + exists $control_command->{location}?(location => $control_command->{location}):(), + ); + is_deeply($status->{$control_command->{status_key}},$control_command->{status_value},"bug 1 $command") + or fail(Dumper($status)); +} + +# now we need to run expire, and make sure that bug is expired +# afterwards +# we punt and touch to set it to something that is archiveable + +# set the access time to twice the remove age +my $old_time = time - 28*2*24*60*60; + +system('touch','-d','@'.$old_time,"$spool_dir/db-h/01/1.log", ); +system('touch','-d','@'.$old_time,"$spool_dir/db-h/01/1.summary",); +system('touch','-d','@'.$old_time,"$spool_dir/db-h/01/1.status", ); +system('touch','-d','@'.$old_time,"$spool_dir/db-h/01/1.report", ); +ok(system('scripts/expire') == 0,'expire completed successfully'); + +ok($status = read_bug(bug => 1,location => 'archive'),'read bug from archive correctly');
=== modified file 'Debbugs/Control.pm' --- Debbugs/Control.pm 2008-08-10 14:55:31 +0000 +++ Debbugs/Control.pm 2008-08-10 15:38:51 +0000 @@ -430,7 +430,7 @@ __handle_affected_packages(data => [EMAIL PROTECTED],%param); print {$transcript} __bug_info(@data); add_recipients(data => [EMAIL PROTECTED], - recipients => $param{recipients} + recipients => $param{recipients}, debug => $debug, transcript => $transcript, ); @@ -585,7 +585,7 @@ print {$transcript} __bug_info(@data); @data and defined $data[0] or die "No bug found for $param{bug}"; add_recipients(data => [EMAIL PROTECTED], - recipients => $param{recipients} + recipients => $param{recipients}, debug => $debug, transcript => $transcript, ); === modified file 't/06_mail_handling.t' --- t/06_mail_handling.t 2008-08-10 14:55:28 +0000 +++ t/06_mail_handling.t 2008-08-10 15:38:51 +0000 @@ -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 => 78; +use Test::More tests => 84; use warnings; use strict; @@ -125,6 +125,16 @@ status_key => 'severity', status_value => 'wishlist', }, + reassign_bar => {command => 'reassign', + value => 'bar', + status_key => 'package', + status_value => 'bar', + }, + reassign_foo => {command => 'reassign', + value => 'foo', + status_key => 'package', + status_value => 'foo', + }, 'found_1.0' => {command => 'found', value => '1.0', status_key => 'found_versions', === modified file 't/lib/DebbugsTest.pm' --- t/lib/DebbugsTest.pm 2008-08-10 14:55:28 +0000 +++ t/lib/DebbugsTest.pm 2008-08-10 15:38:51 +0000 @@ -84,7 +84,7 @@ 1; END "$spool_dir/nextnumber" => qq(1\n), - "$config_dir/Maintainers" => qq(foo Blah Bleargh <[EMAIL PROTECTED]>\n), + "$config_dir/Maintainers" => qq(foo Blah Bleargh <[EMAIL PROTECTED]>\nbar Bar Bleargh <[EMAIL PROTECTED]>\n), "$config_dir/Maintainers.override" => qq(), "$config_dir/indices/sources" => <<END, foo main foo