From a420a33f6623837439b3634eb21d62fa30b31a33 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Wed, 8 May 2013 17:54:29 +0200
Subject: [PATCH] Use "can" to check whether a plugin supports buildFinished

---
 src/script/hydra-build | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/script/hydra-build b/src/script/hydra-build
index 91cfa3b4..13cc5b47 100755
--- a/src/script/hydra-build
+++ b/src/script/hydra-build
@@ -77,6 +77,20 @@ sub failDependents {
 }
 
 
+sub notify {
+    my ($build, $dependents) = @_;
+    foreach my $plugin (Hydra::Plugin->plugins) {
+        next unless $plugin->can('buildFinished');
+        eval {
+            $plugin->buildFinished($db, $config, $build, []);
+        };
+        if ($@) {
+            print STDERR "$plugin->buildFinished: $@\n";
+        }
+    }
+}
+
+
 sub doBuild {
     my ($build) = @_;
 
@@ -288,14 +302,7 @@ sub doBuild {
 
     });
 
-    foreach my $plugin (Hydra::Plugin->plugins) {
-        eval {
-            $plugin->buildFinished($db, $config, $build, []);
-        };
-        if ($@) {
-            print STDERR "$plugin->buildFinished: $@\n";
-        }
-    }
+    notify($build, []);
 }
 
 
@@ -304,7 +311,7 @@ print STDERR "performing build $buildId\n";
 
 if ($ENV{'HYDRA_MAIL_TEST'}) {
     my $build = $db->resultset('Builds')->find($buildId);
-    $_->buildFinished($db, $config, $build, []) foreach Hydra::Plugin->plugins;
+    notify($build, []);
     exit 0;
 }