X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=t%2F12_merge.t;h=a20b3979364b9d16a4fdcd5c3d35eb9fbd74dbb5;hb=refs%2Fheads%2Fmaster;hp=5b76f72c8abf4379ebb54d3c0361028fae6b220a;hpb=f264e889271e05f55bff1c2df40f2bb0caff0732;p=debbugs.git diff --git a/t/12_merge.t b/t/12_merge.t index 5b76f72..901b883 100644 --- a/t/12_merge.t +++ b/t/12_merge.t @@ -1,6 +1,6 @@ # -*- mode: cperl;-*- -use Test::More tests => 29; +use Test::More; use warnings; use strict; @@ -24,25 +24,14 @@ 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 %config = create_debbugs_configuration(); + 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. @@ -126,7 +115,7 @@ ok($status->{severity} eq 'wishlist','bug 1 wishlisted'); my @control_commands = ( clone => {command => 'clone', - value => '-1', + value => '1 -1', status_key => 'package', status_value => 'foo', bug => '2', @@ -137,13 +126,14 @@ my @control_commands = status_value => '2', }, unmerge => {command => 'unmerge', - value => '', + value => '1', status_key => 'mergedwith', status_value => '', }, ); -test_control_commands(@control_commands); +test_control_commands(\%config, + @control_commands); send_message(to => 'control@bugs.something', headers => [To => 'control@bugs.something', @@ -152,7 +142,7 @@ send_message(to => 'control@bugs.something', ], body => <<'EOF') or fail 'message to control@bugs.something failed'; debug 10 -clone 2 -1 -2 -3 -4 +clone 2 -1 -2 -3 -4 -5 -6 -7 -8 retitle 2 foo owner 2 bar@baz.com submitter 2 fleb@bleh.com @@ -165,69 +155,60 @@ affects 2 bleargh forwarded 2 http://example.com/2 close 2 tag -3 wontfix +fixed -4 1.2-3 +found -4 1.2-1 +found -5 1.2-5 +fixed -5 1.2-6 +block -7 by -1 +block -7 by -2 +block -8 by -2 +block -8 by -1 thanks EOF - ; - $SD_SIZE = - num_messages_sent($SD_SIZE,1, - $sendmail_dir, - 'control@bugs.something messages appear to have been sent out properly'); +# The order of "Blocked-By:" in *.summary is not deterministic, so +# these tests assert that the blockers of bugs #9 and #10 are sorted +# differently. +ok(system('perl', '-i', '-pwe', 's/^Blocked-By: 4 3\n/Blocked-By: 3 4\n/;', $spool_dir . '/db-h/09/9.summary') == 0, 'Changed bug #9'); +ok(system('perl', '-i', '-pwe', 's/^Blocked-By: 3 4\n/Blocked-By: 4 3\n/;', $spool_dir . '/db-h/10/10.summary') == 0, 'Changed bug #10'); +ok(system('grep','-q','^Blocked-By: 3 4',"$spool_dir/db-h/09/9.summary") == 0,'Bug #9 has "Blocked-By: 3 4"'); +ok(system('grep','-q','^Blocked-By: 4 3',"$spool_dir/db-h/10/10.summary") == 0,'Bug #10 has "Blocked-By: 4 3"'); -test_control_commands(forcemerge => {command => 'forcemerge', - value => '2', +test_control_commands(\%config, + forcemerge => {command => 'forcemerge', + value => "2 3\nseverity 2 minor", status_key => 'mergedwith', - status_value => '2', + status_value => '3', + bug => 2, }, unmerge => {command => 'unmerge', - value => '', + value => '2', status_key => 'mergedwith', status_value => '', + bug => 2, }, forcemerge => {command => 'forcemerge', - value => '2 5', + value => '1 2 5', status_key => 'mergedwith', status_value => '2 5', }, + forcemerge => {command => 'forcemerge', + value => '1 2 6', + status_key => 'mergedwith', + status_value => '2 5 6', + }, + merge => {command => 'merge', + value => '7 8', + status_key => 'mergedwith', + status_value => '8', + bug => '7', + }, + merge => {command => 'merge', + value => '9 10', + status_key => 'mergedwith', + status_value => '10', + bug => '9', + }, ); - -sub test_control_commands{ - my @commands = @_; - - while (my ($command,$control_command) = splice(@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 => 'control@bugs.something', - headers => [To => 'control@bugs.something', - From => 'foo@bugs.something', - Subject => "Munging a bug with $command", - ], - body => <{command} 1$control_command->{value} -thanks -EOF - ; - $SD_SIZE = - num_messages_sent($SD_SIZE,1, - $sendmail_dir, - 'control@bugs.something messages appear to have been sent out properly'); - # 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, - 'control@bugs.something'. "$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(exists $control_command->{bug}?(bug => $control_command->{bug}):(bug=>1), - exists $control_command->{location}?(location => $control_command->{location}):(), - ); - is_deeply($status->{$control_command->{status_key}}, - $control_command->{status_value}, - "bug " . - (exists $control_command->{bug}?$control_command->{bug}:1). - " $command" - ) - or fail(Dumper($status)); - } -} +done_testing();