about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan "Duke" Leto <jonathan@leto.net>2011-01-18 15:30:02 -0500
committerJonathan "Duke" Leto <jonathan@leto.net>2011-01-18 15:30:02 -0500
commitdddeaba05015d4040ab1aeb502a81e291e9c56a4 (patch)
tree41d31dc19e0c1f533bd1c8a7068ce464c20308af
parentAllow placeholders for project name and SHA1 in build failure emails (diff)
downloadjitterbug-dddeaba05015d4040ab1aeb502a81e291e9c56a4.tar.gz
Refactor jitterbug::Emailer to get rid of some warnings and improve tests
-rw-r--r--lib/jitterbug/Emailer.pm31
-rw-r--r--t/006_emailer.t50
2 files changed, 66 insertions, 15 deletions
diff --git a/lib/jitterbug/Emailer.pm b/lib/jitterbug/Emailer.pm
index ab9bedb..60837d6 100644
--- a/lib/jitterbug/Emailer.pm
+++ b/lib/jitterbug/Emailer.pm
@@ -16,12 +16,29 @@ sub new {
     return $self;
 }
 
+sub _make_body {
+    my ($header, $message, $tap, $footer) = @_;
+
+    no warnings 'uninitialized';
+    return <<BODY;
+$header
+
+Commit Message:
+$message
+
+TAP Output:
+$tap
+
+$footer
+BODY
+
+}
 sub run {
     my $self       = shift;
     my $task       = $self->{'task'};
     my $buildconf  = $self->{'conf'}->{'jitterbug'}{'build_process'};
     my $project    = $task->project->name;
-    my $tap_output = $self->{'tap_output'};
+    my $tap        = $self->{'tap_output'};
     my $sha1       = $task->commit->sha256;
     my $shortsha1  = substr($sha1, 0, 8);
     my $desc       = JSON::decode_json( $task->commit->content );
@@ -29,18 +46,8 @@ sub run {
     my $message    = $desc->{'message'};
     my $header     = $buildconf->{'on_failure_header'};
     my $footer     = $buildconf->{'on_failure_footer'};
+    my $body       = _make_body($header,$message, $tap, $footer);
 
-    my $body = <<BODY;
-$header
-
-Commit Message:
-$message
-
-TAP Output:
-$tap_output
-
-$footer
-BODY
     # Expand placeholders in our on_failure header and footer
     $body =~ s/%%PROJECT%%/$project/g;
     $body =~ s/%%SHA1%%/$sha1/g;
diff --git a/t/006_emailer.t b/t/006_emailer.t
index feffd38..9cdd14a 100644
--- a/t/006_emailer.t
+++ b/t/006_emailer.t
@@ -6,7 +6,7 @@ use Test::MockObject;
 
 use_ok "jitterbug::Emailer";
 
-{
+sub setup {
     my $buildconf = {
         on_failure_from_email     => 'bob@example.com',
         on_failure_cc_email       => 'steve@apple.com',
@@ -21,11 +21,15 @@ use_ok "jitterbug::Emailer";
     $project->mock('name', sub { 'ponie' });
 
     $commit->mock('sha256', sub { 'c0decafe' });
-    $commit->mock('content', sub { '{  }' } );
+    $commit->mock('content', sub { '{ "message" : "blargly blarg"  }' } );
 
     $task->mock('commit', sub { $commit });
     $task->mock('project', sub { $project });
+    return ($conf, $commit, $project, $task);
+}
 
+{
+    my ($conf, $commit, $project, $task) = setup();
     my $tap = "THIS IS TAP";
     my $e = jitterbug::Emailer->new($conf, $task, $tap);
 
@@ -40,7 +44,47 @@ use_ok "jitterbug::Emailer";
     isa_ok($header, 'Email::MIME::Header');
 
     is($header->header_raw('cc'), 'steve@apple.com', 'cc header');
-    is($header->header_raw('subject'), 'BLARG ponie @ c0decafe', 'subject header');
+    like($header->header_raw('subject'), qr/BLARG ponie @ c0decafe blargly blarg/, 'subject header');
     is($header->header_raw('from'), 'bob@example.com', 'from header');
+}
+
+{
+    my $tap = <<TAP;
+Copying lib/Math/Primality/AKS.pm -> blib/lib/Math/Primality/AKS.pm
+Copying lib/Math/Primality/BigPolynomial.pm -> blib/lib/Math/Primality/BigPolynomial.pm
+Copying lib/Math/Primality.pm -> blib/lib/Math/Primality.pm
+Copying bin/primes.pl -> blib/script/primes.pl
+Copying bin/strong_psuedoprimes.pl -> blib/script/strong_psuedoprimes.pl
+# Testing Math::Primality 0.0401, Perl 5.010001, /usr/bin/perl
+t/00-load.t ......................
+1..1
+ok 1 - use Math::Primality;
+ok
+#   Failed test '-1 is not prime'
+#   at t/is_prime.t line 16.
+# Looks like you failed 1 test of 573.
+t/is_prime.t .....................
+1..6
+ok 1 - is_prime should handle Math::GMPz objects, three is prime
+ok 2 - 2 is prime
+ok 3 - 1 is not prime
+ok 4 - 0 is not prime
+not ok 5 - -1 is not prime
+ok 6 - blarg
+t/boilerplate.t ..................
+1..3
+ok 1 - README contains no boilerplate text
+ok 2 - Changes contains no boilerplate text
+ok 3 - lib/Math/Primality.pm contains no boilerplate text
+ok
+Test Summary Report
+-------------------
+t/is_prime.t                   (Wstat: 256 Tests: 573 Failed: 1)
+Failed test:  5
+Non-zero exit status: 1
+Failed 1/11 test programs. 1/2498 subtests failed.
+Files=11, Tests=2498,  3 wallclock secs ( 0.20 usr  0.04 sys +  2.99 cusr  0.18 csys =  3.41 CPU)
+Result: FAIL
+TAP
 
 }