Author: adam-guest
Date: 2008-03-09 01:41:54 +0000 (Sun, 09 Mar 2008)
New Revision: 1117

Modified:
   trunk/Devscripts/Debbugs.pm
   trunk/debian/changelog
Log:
Debbugs.pm:
  + Turn on "use strict" and "use warnings" which got lost when moving
    the code from bts
  + Don't attempt to iterate the result of usertags() in select if
    it's empty (Closes: #470025)
  + Skip arguments to select() that contain valid keys but not values
  + Print a warning about unrecognised keys passed to select()
  + Add on_fault handlers to SOAP calls so we can return useful error
    messages

Modified: trunk/Devscripts/Debbugs.pm
===================================================================
--- trunk/Devscripts/Debbugs.pm 2008-03-09 00:06:58 UTC (rev 1116)
+++ trunk/Devscripts/Debbugs.pm 2008-03-09 01:41:54 UTC (rev 1117)
@@ -86,6 +86,9 @@
 
 =cut
 
+use strict;
+use warnings;
+
 my $soapurl='Debbugs/SOAP/1';
 my $soapproxyurl='http://bugs.debian.org/cgi-bin/soap.cgi';
 
@@ -117,7 +120,7 @@
     my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
     my $usertags = $soap->get_usertag(@_)->result();
 
-    return $usertags;    
+    return $usertags;
 }
 
 sub select {
@@ -145,20 +148,24 @@
      my %users;
      my %search_parameters;
      my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+     my $soapfault;
+     $soap->on_fault(sub { $soapfault = $_; });
      for my $arg (@args) {
           my ($key,$value) = split /:/, $arg, 2;
+          next unless $key;
           if (exists $valid_keys{$key}) {
                push @{$search_parameters{$valid_keys{$key}}},
-                    $value;
-          }
-          elsif ($key =~/users?$/) {
+                    $value if $value;
+          } elsif ($key =~/users?$/) {
                $users{$value} = 1;
+          } else {
+               warn "select(): Unrecognised key: $key\n";
           }
      }
      my %usertags;
      for my $user (keys %users) {
           my $ut = usertags($user);
-          next unless defined $ut;
+          next unless defined $ut and $ut ne "";
           for my $tag (keys %{$ut}) {
                push @{$usertags{$tag}},
                     @{$ut->{$tag}};
@@ -168,7 +175,8 @@
                                 (keys %usertags)?(usertags=>\%usertags):()
                                )->result();
      if (not defined $bugs) {
-          die "Error while retrieving bugs from SOAP server";
+         die "Error while retrieving bugs from SOAP server: $soapfault"
+             if $soapfault;
      }
 
     return $bugs;
@@ -179,11 +187,14 @@
     my @args = @_;
 
     my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+    my $soapfault;
+    $soap->on_fault(sub { $soapfault = $_; });
 
     my $bugs = $soap->get_status(@args)->result();
 
     if (not defined $bugs) {
-       die "Error while retrieving bug statuses from SOAP server";
+       die "Error while retrieving bug statuses from SOAP server: $soapfault"
+           if $soapfault;
     }
 
     return $bugs;
@@ -224,11 +235,14 @@
     $search_parameters{dist} = [EMAIL PROTECTED] if @dists;
 
     my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+    my $soapfault;
+    $soap->on_fault(sub { $soapfault = $_; });
 
     my $versions = $soap->get_versions(%search_parameters)->result();
 
     if (not defined $versions) {
-       die "Error while retrieivng package versions from SOAP server: $@";
+       die "Error while retrieivng package versions from SOAP server: 
$soapfault"
+           if $soapfault;
     }
 
     return $versions;
@@ -254,11 +268,14 @@
     return if $count !~ /^\d+$/;
 
     my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+    my $soapfault;
+    $soap->on_fault(sub { $soapfault = $_; });
 
     my $bugs = $soap->newest_bugs($count)->result();
 
     if (not defined $bugs) {
-       die "Error while retrieving newest bug list from SOAP server: $@";
+       die "Error while retrieving newest bug list from SOAP server: 
$soapfault"
+           if $soapfault;
     }
 
     return $bugs;
@@ -276,10 +293,14 @@
     return if $bug !~ /^\d+$/;
 
     my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+    my $soapfault;
+    $soap->on_fault(sub { $soapfault = $_; });
+
     my $log = $soap->get_bug_log($bug, $message)->result();
 
     if (not defined $log) {
-       die "Error while retrieving bug log from SOAP server: $@";
+       die "Error while retrieving bug log from SOAP server: $soapfault"
+           if $soapfault;
     }
 
     return $log;
@@ -290,6 +311,8 @@
        unless have_soap();
 
     my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+    my $soapfault;
+    $soap->on_fault(sub { $soapfault = $_; });
 
     my $binpkg = shift;
     my $binver = shift;
@@ -300,7 +323,8 @@
     my $mapping = $soap->binary_to_source($binpkg, $binver, $arch)->result();
 
     if (not defined $mapping) {
-       die "Error while retrieving binary to source mapping from SOAP server: 
$@";
+       die "Error while retrieving binary to source mapping from SOAP server: 
$soapfault"
+           if $soapfault;
     }
 
     return $mapping;
@@ -311,6 +335,8 @@
        unless have_soap();
 
     my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+    my $soapfault;
+    $soap->on_fault(sub { $soapfault = $_; });
 
     my $srcpkg = shift;
     my $srcver = shift;
@@ -320,7 +346,8 @@
     my $mapping = $soap->source_to_binary($srcpkg, $srcver)->result();
 
     if (not defined $mapping) {
-       die "Error while retrieving source to binary mapping from SOAP server: 
$@";
+       die "Error while retrieving source to binary mapping from SOAP server: 
$soapfault"
+           if $soapfault;
     }
 
     return $mapping;

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog      2008-03-09 00:06:58 UTC (rev 1116)
+++ trunk/debian/changelog      2008-03-09 01:41:54 UTC (rev 1117)
@@ -44,6 +44,15 @@
   * bts: Don't treat "userblah" as an alias for "users" in "select"
   * nmudiff: Fix --nomutt's To: handling. Thanks Thomas Viehmann
     (Closes: #470069)
+  * Debbugs.pm:
+    + Turn on "use strict" and "use warnings" which got lost when moving
+      the code from bts
+    + Don't attempt to iterate the result of usertags() in select if
+      it's empty (Closes: #470025)
+    + Skip arguments to select() that contain valid keys but not values
+    + Print a warning about unrecognised keys passed to select()
+    + Add on_fault handlers to SOAP calls so we can return useful error
+      messages
 
  -- Adam D. Barratt <[EMAIL PROTECTED]>  Sat, 01 Mar 2008 11:42:02 +0000
 



-- 
To unsubscribe, send mail to [EMAIL PROTECTED]

Reply via email to