]> git.donarmstrong.com Git - debbugs.git/blobdiff - t/12_merge.t
Don't make the logo; it's checked into git and isn't necessary
[debbugs.git] / t / 12_merge.t
index 5b76f72c8abf4379ebb54d3c0361028fae6b220a..901b883465f14cd65f40f27349564894ed6dc893 100644 (file)
@@ -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',
                       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   => '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 => <<EOF) or fail 'message to control@bugs.something failed';
-debug 10
-$control_command->{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();