package Test::Smoke::Mailer::Base; use warnings; use strict; our $VERSION = '0.001'; use Test::Smoke::Util qw( parse_report_Config ); =head1 NAME Test::Smoke::Mailer::Base - baseclass for Mailers =head1 DESCRIPTION =cut our $P5P = 'perl5-porters@perl.org'; our $NOCC_RE = ' (?:PASS\b|FAIL\(X\))'; =head2 Test::Smoke::Mailer::Base->new() constructor. =cut sub new { my $class = shift; return bless {@_}, $class; } =head2 $mailer->fetch_report( ) C reads B from C<{ddir}> and return the subject line for the mail-message. =cut sub fetch_report { my $self = shift; $self->{file} = File::Spec->catfile( $self->{ddir}, $self->{rptfile} ); local *REPORT; if ( open REPORT, "< $self->{file}" ) { $self->{body} = do { local $/; }; close REPORT; } else { require Carp; Carp::croak( "Cannot read '$self->{file}': $!" ); } my @config = parse_report_Config( $self->{body} ); return sprintf "Smoke [%s] %s %s %s %s (%s)", @config[6, 1, 5, 2, 3, 4]; } =head2 $mailer->error( ) C returns the value of C<< $mailer->{error} >>. =cut sub error { my $self = shift; return $self->{error} || ''; } =head2 $self->_get_cc( $subject ) C<_get_cc()> implements the C<--ccp5p_onfail> option. It looks at the subject to see if the smoke FAILed and then adds the I mailing-list to the C field unless it is already part of C or C. The new behaviour is to only return C on fail. This is determined by the new global regex kept in C<< $Test::Smoke::Mailer::NOCC_RE >>. =cut sub _get_cc { my( $self, $subject ) = @_; return "" if $subject =~ m/$Test::Smoke::Mailer::NOCC_RE/; return $self->{cc} || "" unless $self->{ccp5p_onfail}; my $p5p = $Test::Smoke::Mailer::P5P or return $self->{cc}; my @cc = $self->{cc} ? $self->{cc} : (); push @cc, $p5p unless $self->{to} =~ /\Q$p5p\E/ || $self->{cc} =~ /\Q$p5p\E/; return join ", ", @cc; } 1; =head1 COPYRIGHT (c) 2002-2013, All rights reserved. * Abe Timmerman This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See: * , * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =cut