On Sat, Oct 06, 2007 at 06:02:59PM +0200, Simon Bertrang wrote:
> On Sat, Oct 06, 2007 at 05:36:25PM +0200, Marc Espie wrote:
> > On Sat, Oct 06, 2007 at 02:01:18PM +0200, Simon Bertrang wrote:
> > > This hasn't changed but i added a new variable CPAN_REPORT_FROM to set
> > > the report sender address.  Defaults to ${MAINTAINER}.
> > > Further i changed the report file name from ${DISTNAME} to ${PKGNAME}.
> > 
> > I disagree about this. CPAN_REPORT_FROM should not default. In fact, it
> > should error out if it's not set.
> > 
> > You should have to set it to whomever is running the tests. Anything else
> > is totally bogus.
> 
> Agreed.  Updated diffs attached.
> 

With feedback from [EMAIL PROTECTED]

After i sent out the collected reports from the last months [0] i found
a few false positives caused by the fact that not all tests end with
'All tests successful'.
Seems like 'FAILED' is a better indicator as most (all?) tests seem to
provide that if something went wrong.

Another thing that annoyed me pretty much was the exit code from
build/cpanreport leading to the creation of ${_REGRESS_COOKIE}.
Now there's simply an additional 'exit 1;' for the failure case.

Please test and comment.

Regards,
Simon

[0] 
http://www.mail-archive.com/search?l=cpan-testers%40perl.org&q=simon+bertrang


Index: build/cpanreport
===================================================================
RCS file: build/cpanreport
diff -N build/cpanreport
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ build/cpanreport    9 Jan 2008 18:45:04 -0000
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+# $OpenBSD$
+# Copyright (c) 2007, 2008 Simon Bertrang <[EMAIL PROTECTED]>
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Neither the name of OpenBSD nor the names of its contributors
+#    may be used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY ITS AUTHOR AND THE OpenBSD project ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+use strict;
+use Getopt::Std qw(getopts);
+use Test::Reporter;
+
+my $distname;
+my $log;
+my %opts = (
+       'f'     => $ENV{'REGRESS_LOGFILE'} || '-',
+       'g'     => '',
+       's'     => $ENV{'CPAN_REPORT_FROM'} || '',
+);
+my $reporter;
+
+sub usage {
+       die("usage: $0 [-f regress.log] -s address" .
+           " -g fail|pass|na|unknown distname\n");
+}
+
+unless (getopts('f:g:s:', \%opts)) {
+       usage();
+}
+
+unless ($opts{'g'} && $opts{'g'} =~ m/^(?:pass|fail|na|unknown)$/o) {
+       usage();
+}
+
+unless ($distname = shift(@ARGV)) {
+       usage();
+}
+
+unless ($opts{'g'} eq 'pass') {
+       my $fh;
+
+       unless (open($fh, $opts{'f'})) {
+               die("$0: $!: $opts{'f'}\n");
+       }
+
+       {
+               local($/) = undef;
+               $log = <$fh>;
+       }
+
+       close($fh);
+}
+
+$reporter = Test::Reporter->new();
+
+$reporter->from($opts{'s'});
+$reporter->grade($opts{'g'});
+$reporter->distribution($distname);
+
+if ($log) {
+       $reporter->comments($log);
+}
+
+$reporter->write(\*STDOUT);
+
Index: mk/cpan.port.mk
===================================================================
RCS file: /cvs/ports/infrastructure/mk/cpan.port.mk,v
retrieving revision 1.4
diff -u -p -r1.4 cpan.port.mk
--- mk/cpan.port.mk     25 Nov 2006 13:14:40 -0000      1.4
+++ mk/cpan.port.mk     9 Jan 2008 18:45:04 -0000
@@ -21,3 +21,29 @@ PKG_ARCH?=   * 
 REGRESS_DEPENDS+=::devel/p5-Test-Pod \
                 ::devel/p5-Test-Pod-Coverage
 .endif
+
+CPAN_REPORT?=  No
+
+.if ${CPAN_REPORT:L} == "yes"
+REGRESS_DEPENDS+=::devel/p5-Test-Reporter
+REGRESS_FLAGS+=        TEST_VERBOSE=1
+.  if !defined(CPAN_REPORT_DB) || !exists(${CPAN_REPORT_DB})
+ERRORS+=       "Fatal: CPAN_REPORT_DB must point to a directory"
+.  endif
+.  if !defined(CPAN_REPORT_FROM) || empty(CPAN_REPORT_FROM)
+ERRORS+=       "Fatal: CPAN_REPORT_FROM needs an email address"
+.  endif
+
+CPANTEST=      ${PORTSDIR}/infrastructure/build/cpanreport
+CPANTEST_FLAGS=        -f ${REGRESS_LOGFILE} -s ${CPAN_REPORT_FROM:Q} 
${DISTNAME} \
+                       > ${CPAN_REPORT_DB}/${PKGNAME}
+CPANTEST_PASS= -g pass ${CPANTEST_FLAGS}
+CPANTEST_FAIL= -g fail ${CPANTEST_FLAGS}
+
+post-regress:
+       @if grep -q 'FAILED' ${REGRESS_LOGFILE}; then \
+               ${CPANTEST} ${CPANTEST_FAIL}; \
+               exit 1; \
+       else ${CPANTEST} ${CPANTEST_PASS}; fi
+
+.endif

Reply via email to