Here's script I'm using:
http://svn.trouchelle.com/perl/cpan/0sendreports.pl

Yours has two flaws: first, you remove a report file before submitting it to Metabase. If something goes wrong, your report is lost. Second, you should check if you really removed report file. I had a problem when my filesystem was set to readonly and 4 reports was sent over and over again for few thousand times.

About the issue with different information in tail log and report, it was addressed some time ago and Metabase contains correct information. Probably, a server part responsible for writing log files seems to still have the same problem and is using client information and not report's one. But Metabase itself should be unaffected by this.

Chris Marshall wrote:

I'm trying to implement a way to submit CPAN Testers
reports generated offline from the report files.  Here
is the script I came up with and just tried.  The problem
is it appears from the tail/log.txt from the metabase site
that some of the information of the sending perl
instance (cygwin perl) may have gotten mixed in
with the information of the test report (asperl).  Is this
a bug in the metabase transport or is there something
else I need to add to make this work?

Thanks in advance,
Chris

use Test::Reporter;
use Test::Reporter::Transport::Metabase;

$reports_dir = 'reports';
opendir(DIR, $reports_dir);
@reports = grep { /^[^.]/&&  -f "$reports_dir/$_" } readdir(DIR);
closedir DIR;

print join("\n", "Got reports to process: ", @reports) . "\n";

foreach $file (sort @reports) {
    unless (-e "$reports_dir/$file") { next }

    # load file and set in
    $reporter = Test::Reporter->new();
    $reporter->transport('Metabase');
    $reporter->transport_args(
       uri =>  'http://metabase.cpantesters.org/api/v1/',
       id_file =>  '/cygdrive/f/chm/.cpanreporter/chm.json',
    );

    # output file being processed
    print "processing... $file\n";

    # sanitize email address in report
    ### `perl -i -p -e 's|dcol...@gmail.com|dcol...@cpan.org|g'
/usr/share/reports/$file`;

    eval('$report = $reporter->read("$reports_dir/$file")');
    $error = $reporter->errstr();
    $error ? print $error."\n"&&  next : undef;

    # clean up file after processing
    print "  rm -f /usr/share/reports/$file\n";

    # send report in
    eval('$retval = $report->send()');
    $error = $reporter->errstr();
    $error ? (print $error."\n") : undef;
}


--
Serguei Trouchelle

Reply via email to