X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FControl.pm;h=20f82dfc2741e1d527b89cb330dcbb2dc0a13b6c;hb=c1569efefef3fc46846a6b6c6a16787aab78c246;hp=8903ddefbaa76595534b1d8ebae355892a2255ba;hpb=b24bd1b5c8d818b64aa745e3fa60196692619ed7;p=debbugs.git diff --git a/Debbugs/Control.pm b/Debbugs/Control.pm index 8903dde..20f82df 100644 --- a/Debbugs/Control.pm +++ b/Debbugs/Control.pm @@ -134,7 +134,7 @@ use Mail::RFC822::Address qw(); use POSIX qw(strftime); use Storable qw(dclone nfreeze); -use List::Util qw(first max); +use List::AllUtils qw(first max); use Encode qw(encode_utf8); use Carp; @@ -379,6 +379,7 @@ sub set_blocks { # throw an error if we are setting the blockers and there is a bad # blocker if (keys %bad_blockers and $mode eq 'set') { + __end_control(%info); croak "Unknown blocking bug(s):".join(', ',keys %bad_blockers). keys %ok_blockers?'':" and no known blocking bug(s)"; } @@ -387,6 +388,7 @@ sub set_blocks { if (not keys %ok_blockers and $mode ne 'set') { print {$transcript} "No valid blocking bug(s) given; not doing anything\n"; if (keys %bad_blockers) { + __end_control(%info); croak "Unknown blocking bug(s):".join(', ',keys %bad_blockers); } __end_control(%info); @@ -410,6 +412,7 @@ sub set_blocks { @bugs{@bugs} = (1) x @bugs; for my $blocker (@change_blockers) { if ($bugs{$blocker}) { + __end_control(%info); croak "It is nonsensical for a bug to block itself (or a merged partner): $blocker"; } } @@ -1975,8 +1978,11 @@ sub set_merged { $data->{mergedwith} = ''; } else { - $data->{mergedwith} = join(' ',sort grep {$_ != $data->{bug_num}} - keys %merged_bugs); + $data->{mergedwith} = + join(' ', + sort {$a <=> $b} + grep {$_ != $data->{bug_num}} + keys %merged_bugs); } append_action_to_log(bug => $data->{bug_num}, command => 'merge', @@ -2067,9 +2073,11 @@ sub set_merged { print {$transcript} "$change->{field} of #$change->{bug} is '$change->{text_orig_value}' not '$change->{text_value}'\n"; } if ($attempts > 0) { + __end_control(%info); croak "Some bugs were altered while attempting to merge"; } else { + __end_control(%info); croak "Did not alter merged bugs"; } } @@ -2157,11 +2165,14 @@ sub set_merged { } # finally, we can merge the bugs - my $action = "Merged ".join(' ',sort keys %merged_bugs); + my $action = "Merged ".join(' ',sort { $a <=> $b } keys %merged_bugs); for my $data (@data) { my $old_data = dclone($data); - $data->{mergedwith} = join(' ',sort grep {$_ != $data->{bug_num}} - keys %merged_bugs); + $data->{mergedwith} = + join(' ', + sort { $a <=> $b } + grep {$_ != $data->{bug_num}} + keys %merged_bugs); append_action_to_log(bug => $data->{bug_num}, command => 'merge', new_data => $data, @@ -3792,7 +3803,7 @@ LIMIT: for my $limit (make_list($param{limit}{$field})) { } if (not $match) { $going_to_fail = 1; - print {$transcript} qq($field: ).join(', ',map{qq("$_")} make_list($data->{$field})). + print {$transcript} qq($field: ').join(', ',map{qq("$_")} make_list($data->{$field})). "' does not match at least one of ". join(', ',map {ref($_)?'(regex)':qq("$_")} make_list($param{limit}{$field}))."\n"; } @@ -3835,7 +3846,7 @@ sub __message_body_template{ $extra_var ||={}; my $hole_var = {'&bugurl' => sub{"$_[0]: ". - 'http://'.$config{cgi_domain}.'/'. + $config{cgi_domain}.'/'. Debbugs::CGI::bug_links(bug => $_[0], links_only => 1, );