From: Don Armstrong Date: Fri, 16 Mar 2018 00:14:56 +0000 (-0700) Subject: Merge branch 'database' X-Git-Url: https://git.donarmstrong.com/?p=debbugs.git;a=commitdiff_plain;h=53c435119200ab9b1c2538a96b8374c51a078855 Merge branch 'database' --- 53c435119200ab9b1c2538a96b8374c51a078855 diff --cc Debbugs/CGI/Pkgreport.pm index b7bd6a9,078feca..060e980 --- a/Debbugs/CGI/Pkgreport.pm +++ b/Debbugs/CGI/Pkgreport.pm @@@ -350,14 -353,12 +353,14 @@@ sub pkg_htmlizebugs push @{$exclude{$key}}, split /\s*,\s*/, $value; } + my $binary_to_source_cache = {}; foreach my $bug (@bugs) { - my %status = %{get_bug_status(bug=>$bug, - (exists $param{dist}?(dist => $param{dist}):()), - bugusertags => $param{bugusertags}, - (exists $param{version}?(version => $param{version}):()), + my %status = %{get_bug_status(bug=>$bug, + (map {exists $param{$_}?($_,$param{$_}):()} + qw(dist version schema bugusertags) + ), (exists $param{arch}?(arch => $param{arch}):(arch => $config{default_architectures})), + binary_to_source_cache => $binary_to_source_cache, )}; next unless %status; next if bug_filter(bug => $bug, diff --cc Debbugs/Status.pm index 2c6ce20,7af7fcf..9d047a4 --- a/Debbugs/Status.pm +++ b/Debbugs/Status.pm @@@ -1198,40 -1221,38 +1227,43 @@@ sub get_bug_status if (@_ == 1) { unshift @_, 'bug'; } + state $spec = + {bug => {type => SCALAR, + regex => qr/^\d+$/, + }, + status => {type => HASHREF, + optional => 1, + }, + bug_index => {type => OBJECT, + optional => 1, + }, + version => {type => SCALAR|ARRAYREF, + optional => 1, + }, + dist => {type => SCALAR|ARRAYREF, + optional => 1, + }, + arch => {type => SCALAR|ARRAYREF, + optional => 1, + }, + bugusertags => {type => HASHREF, + optional => 1, + }, + sourceversions => {type => ARRAYREF, + optional => 1, + }, + indicatesource => {type => BOOLEAN, + default => 1, + }, + binary_to_source_cache => {type => HASHREF, + optional => 1, + }, ++ schema => {type => OBJECT, ++ optional => 1, ++ }, + }; my %param = validate_with(params => \@_, - spec => {bug => {type => SCALAR, - regex => qr/^\d+$/, - }, - status => {type => HASHREF, - optional => 1, - }, - bug_index => {type => OBJECT, - optional => 1, - }, - version => {type => SCALAR|ARRAYREF, - optional => 1, - }, - dist => {type => SCALAR|ARRAYREF, - optional => 1, - }, - arch => {type => SCALAR|ARRAYREF, - optional => 1, - }, - bugusertags => {type => HASHREF, - optional => 1, - }, - sourceversions => {type => ARRAYREF, - optional => 1, - }, - indicatesource => {type => BOOLEAN, - default => 1, - }, - schema => {type => OBJECT, - optional => 1, - }, - }, + spec => $spec, ); my %status; diff --cc debian/control index cdf4fd2,7729153..0226f70 --- a/debian/control +++ b/debian/control @@@ -11,15 -11,14 +11,16 @@@ Build-Depends-Indep: libparams-validate libmailtools-perl, libmime-tools-perl, libio-stringy-perl, libmldbm-perl, liburi-perl, libsoap-lite-perl, libcgi-simple-perl, libhttp-server-simple-perl, libtest-www-mechanize-perl, - libmail-rfc822-address-perl, libsafe-hole-perl, libuser-perl, + libmail-rfc822-address-perl, libuser-perl, libconfig-simple-perl, libtest-pod-perl, liblist-allutils-perl, - # used by Debbugs::Libravatar and libravatar.cgi libfile-libmagic-perl, libgravatar-url-perl, libwww-perl, imagemagick, - libdbix-class-perl, libdatetime-format-pg-perl, ++ libdbix-class-perl, libdatetime-format-pg-perl, libtest-postgresql-perl, + libdatetime-format-mail-perl, - libtext-template-perl, graphviz, libtext-iconv-perl, libnet-server-perl, - libtest-postgresql-perl -Homepage: http://wiki.debian.org/Teams/Debbugs + libtext-xslate-perl, graphviz, libtext-iconv-perl, libnet-server-perl, +# used to make the logo + inkscape +Homepage: https://salsa.debian.org/debbugs-team +Testsuite: autopkgtest-pkg-perl Package: debbugs Architecture: all @@@ -44,14 -43,16 +45,15 @@@ Description: bug tracking system based Package: libdebbugs-perl Architecture: all Depends: - ${misc:Depends}, - ${perl:Depends}, libmailtools-perl, ed, libmime-tools-perl, + ${misc:Depends}, ${perl:Depends}, libmailtools-perl, ed, libmime-tools-perl, libio-stringy-perl, libmldbm-perl, liburi-perl, libsoap-lite-perl, - libcgi-simple-perl, libparams-validate-perl, libtext-template-perl, - libsafe-hole-perl, libmail-rfc822-address-perl, liblist-moreutils-perl, - libtext-template-perl, - # used by Debbugs::Libravatar and libravatar.cgi - libfile-libmagic-perl, - libgravatar-url-perl, libwww-perl, imagemagick, + libcgi-simple-perl, libparams-validate-perl, libtext-xslate-perl, + libmail-rfc822-address-perl, liblist-allutils-perl, + graphviz, libtext-iconv-perl, libuser-perl, +# used by Debbugs::Libravatar and libravatar.cgi + libfile-libmagic-perl, libgravatar-url-perl, libwww-perl, imagemagick + # used by the database + libdatetime-format-mail-perl, libdbix-class-perl, libdatetime-format-pg-perl Section: perl Description: modules used by the active Debian BTS Debian has a bug tracking system which files details of bugs reported by diff --cc t/lib/DebbugsTest.pm index a336bc6,fcc0dc0..a23fdd4 --- a/t/lib/DebbugsTest.pm +++ b/t/lib/DebbugsTest.pm @@@ -42,10 -43,10 +43,11 @@@ BEGIN @EXPORT = (); %EXPORT_TAGS = (configuration => [qw(dirsize create_debbugs_configuration send_message)], mail => [qw(num_messages_sent)], + control => [qw(test_control_commands)], + database => [qw(create_postgresql_database update_postgresql_database)] ); @EXPORT_OK = (); - Exporter::export_ok_tags(qw(configuration mail control)); + Exporter::export_ok_tags(keys %EXPORT_TAGS); $EXPORT_TAGS{all} = [@EXPORT_OK]; } @@@ -206,82 -207,6 +208,80 @@@ sub send_message } } +=item test_control_commands + + test_control_commands(\%config, + forcemerge => {command => 'forcemerge', + value => '1 2', + status_key => 'mergedwith', + status_value => '2', + expect_error => 0, + }); + +Test a set of control commands to see if they will fail or not. Takes +SCALAR/HASHREF pairs, where the scalar should be unique, and the HASHREF +contains the following keys: + +=over + +=item command -- control command to issue + +=item value -- value to pass to control command + +=item status_key -- bug status key to check + +=item status_value -- value of status key + +=item expect_error -- whether to expect the control command to error or not + +=back + +=cut + +sub test_control_commands { + my ($config,@commands) = @_; + + # 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);"; + 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} $control_command->{value} +thanks +EOF + ; + # now we need to check to make sure the control message was processed without errors + if (not ($control_command->{expect_error} // 0)) { + ok(system('sh','-c','find '.$config->{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(Data::Dumper->Dump([$status],[qw(status)])); + } +} + + - $SIG{CHLD} = sub {}; - { package DebbugsTest::HTTPServer; use base qw(HTTP::Server::Simple::CGI HTTP::Server::Simple::CGI::Environment);