# -*- mode: cperl;-*-
-use Test::More tests => 32;
+use Test::More;
use warnings;
use strict;
# 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.
my @control_commands =
(
clone => {command => 'clone',
- value => '-1',
+ value => '1 -1',
status_key => 'package',
status_value => 'foo',
bug => '2',
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',
],
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
retitle 2 foo
owner 2 bar@baz.com
submitter 2 fleb@bleh.com
tag -3 wontfix
fixed -4 1.2-3
found -4 1.2-1
+found -5 1.2-5
+fixed -5 1.2-6
thanks
EOF
- ;
- $SD_SIZE =
- num_messages_sent($SD_SIZE,1,
- $sendmail_dir,
- 'control@bugs.something messages appear to have been sent out properly');
-
-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 => '2 6',
+ 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',
+ },
);
-
-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();