Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

first abstraction from CPAN-Testers-Data-Generator

  • Loading branch information...
commit f7cb46fe1500973a0467a3236e6db8321ff9df13 0 parents
authored February 12, 2009
8  CHANGES
... ...
@@ -0,0 +1,8 @@
  1
+Revision history for Perl module CPAN::Testers::Common::Article
  2
+===============================================================
  3
+
  4
+0.36    12/02/2009
  5
+        - initial independent release.
  6
+	- abstracted from CPAN-Testers-Data-Generator, as used by more than
  7
+	  that distribution, and sits more appropriately on its own. Hence why
  8
+	  the version number starts where it does :)
16  MANIFEST
... ...
@@ -0,0 +1,16 @@
  1
+CHANGES
  2
+MANIFEST			This list of files
  3
+Makefile.PL
  4
+META.yml
  5
+README
  6
+lib/CPAN/Testers/Common/Article.pm
  7
+t/01base.t
  8
+t/10functions.t
  9
+t/11article.t
  10
+t/90podtest.t
  11
+t/91podcover.t
  12
+t/94metatest.t
  13
+t/nntp/126015.txt
  14
+t/nntp/125106.txt
  15
+t/nntp/1804993.txt
  16
+t/nntp/1805500.txt
47  META.yml
... ...
@@ -0,0 +1,47 @@
  1
+--- #YAML:1.0
  2
+name:                     CPAN-Testers-Common-Article
  3
+version:                  0.36
  4
+abstract:                 Parse a CPAN Testers NNTP article
  5
+author:
  6
+  - Barbie <barbie@cpan.org>
  7
+  - Leon Brocard <leon@astray.com>
  8
+
  9
+license:                  perl
  10
+distribution_type:        module
  11
+installdirs:              site
  12
+
  13
+requires:
  14
+  Class::Accessor::Fast:            0
  15
+  CPAN::DistnameInfo:               0
  16
+  Email::Simple:                    0
  17
+  MIME::Base64:                     0
  18
+  MIME::QuotedPrint:                0
  19
+  Time::Local:                      0
  20
+recommends:
  21
+  IO::File:                         0
  22
+  Test::More:                       0.70
  23
+  Test::Pod:                        1.00
  24
+  Test::Pod::Coverage:              0.08
  25
+  Test::CPAN::Meta:                 0.12
  26
+build_requires:
  27
+  IO::File:                         0
  28
+  Test::More:                       0.01
  29
+
  30
+provides:
  31
+  CPAN::Testers::Common::Article:
  32
+    file:     lib/CPAN/Testers/Common/Article.pm
  33
+    version:  0.36
  34
+
  35
+no_index:
  36
+  directory:
  37
+    - t
  38
+    - examples
  39
+
  40
+resources:
  41
+  license:    http://dev.perl.org/licenses/
  42
+  bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Testers-Common-Article
  43
+
  44
+meta-spec:
  45
+   version:   1.4
  46
+   url:       http://module-build.sourceforge.net/META-spec-v1.4.html
  47
+generated_by: Hand 1.0
22  Makefile.PL
... ...
@@ -0,0 +1,22 @@
  1
+use ExtUtils::MakeMaker;
  2
+WriteMakefile(
  3
+    'NAME'          => 'CPAN::Testers::Common::Article',
  4
+    'VERSION_FROM'  => 'lib/CPAN/Testers/Common/Article.pm',
  5
+    'PREREQ_PM'     => {
  6
+        'Class::Accessor::Fast' => 0,
  7
+        'CPAN::DistnameInfo'    => 0,
  8
+        'Email::Simple'         => 0,
  9
+        'MIME::Base64'          => 0,
  10
+        'MIME::QuotedPrint'     => 0,
  11
+        'Time::Local'           => 0,
  12
+
  13
+        'IO::File'              => 0,       # only for testing
  14
+        'Test::More'            => 0,       # only for testing
  15
+    },
  16
+
  17
+    NO_META         => 1,
  18
+
  19
+    ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
  20
+      (ABSTRACT	=> 'Parse a CPAN Testers NNTP article',
  21
+       AUTHOR	=> 'Barbie <barbie@cpan.org>') : ()),
  22
+);
54  README
... ...
@@ -0,0 +1,54 @@
  1
+CPAN-Testers-Common-Article
  2
+===========================
  3
+
  4
+This distribution is used to parse a CPAN Testers NNTP article.
  5
+
  6
+DEPENDENCIES
  7
+
  8
+The distribution requires the following modules:
  9
+
  10
+  Class::Accessor::Fast
  11
+  CPAN::DistnameInfo
  12
+  Email::Simple
  13
+  MIME::Base64
  14
+  MIME::QuotedPrint
  15
+  Time::Local
  16
+
  17
+INSTALLATION
  18
+
  19
+To install this module, untar the tarball into the directory of choice then
  20
+type the following on the command line (substitute make with nmake or dmake
  21
+if appropriate):
  22
+
  23
+  perl Makefile.PL
  24
+  make
  25
+  make test
  26
+  make install
  27
+
  28
+Alternatively you may wish to use the CPAN.pm shell or CPANPLUS shell as your
  29
+installer, which will automatically detect uninstalled prerequisities and 
  30
+install those too for you.
  31
+
  32
+BUGS, PATCHES & FIXES
  33
+
  34
+There are no known bugs at the time of this release. However, if you spot a
  35
+bug or are experiencing difficulties that are not explained within the POD
  36
+documentation, please submit a bug to the RT system (see link below). However,
  37
+it would help greatly if you are able to pinpoint problems or even supply a 
  38
+patch. 
  39
+
  40
+Fixes are dependant upon their severity and my availablity. Should a fix not
  41
+be forthcoming, please feel free to (politely) remind me by sending an email
  42
+to barbie@cpan.org .
  43
+
  44
+RT: http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Testers-Common-Article
  45
+
  46
+AUTHOR & COPYRIGHT
  47
+
  48
+  Original author:    Leon Brocard <acme@astray.com>   (C) 2002-2008
  49
+  Current maintainer: Barbie       <barbie@cpan.org>   (C) 2008-2009
  50
+
  51
+LICENCE
  52
+
  53
+  This package is free software; you can redistribute it and/or 
  54
+  modify it under the same terms as Perl itself.
417  lib/CPAN/Testers/Common/Article.pm
... ...
@@ -0,0 +1,417 @@
  1
+package CPAN::Testers::Common::Article;
  2
+
  3
+use warnings;
  4
+use strict;
  5
+use vars qw($VERSION);
  6
+
  7
+$VERSION = '0.36';
  8
+
  9
+#----------------------------------------------------------------------------
  10
+# Library Modules
  11
+
  12
+use CPAN::DistnameInfo;
  13
+use Email::Simple;
  14
+use MIME::Base64;
  15
+use MIME::QuotedPrint;
  16
+use Time::Local;
  17
+
  18
+use base qw( Class::Accessor::Fast );
  19
+
  20
+#----------------------------------------------------------------------------
  21
+# Variables
  22
+
  23
+my %month = (
  24
+	Jan => 1, Feb => 2, Mar => 3, Apr => 4,  May => 5,  Jun => 6,
  25
+	Jul => 7, Aug => 8, Sep => 9, Oct => 10, Nov => 11, Dec => 12,
  26
+);
  27
+
  28
+my %regexes = (
  29
+    # with time
  30
+    1 => { re => qr/(?:\w+,)?\s+(\d+)\s+(\w+)\s+(\d+)\s+(\d+):(\d+)/,   f => [qw(day month year hour min)] },     # Wed, 13 September 2004 06:29
  31
+    2 => { re => qr/(\d+)\s+(\w+)\s+(\d+)\s+(\d+):(\d+)/,               f => [qw(day month year hour min)] },     # 13 September 2004 06:29
  32
+    3 => { re => qr/(\w+)?\s+(\d+),?\s+(\d+)\s+(\d+):(\d+)/,            f => [qw(month day year hour min)] },     # September 22, 1999 06:29
  33
+
  34
+    # just the date
  35
+    4 => { re => qr/(?:\w+,)?\s+(\d+)\s+(\w+)\s+(\d+)/, f => [qw(day month year)] },  # Wed, 13 September 2004
  36
+    5 => { re => qr/(\d+)\s+(\w+)\s+(\d+)/,             f => [qw(day month year)] },  # 13 September 2004
  37
+    6 => { re => qr/(\w+)?\s+(\d+),?\s+(\d+)/,          f => [qw(month day year)] },  # September 22, 1999 06:29
  38
+);
  39
+
  40
+my $OSNAMES = qr/(cygwin|freebsd|netbsd|openbsd|darwin|linux|cygwin|darwin|MSWin32|dragonfly|solaris|MacOS|irix|mirbsd|gnu|bsdos|aix|sco|os2)/i;
  41
+my %OSNAMES = (
  42
+    'MacPPC'    => 'macos',
  43
+    'osf'       => 'dec_osf',
  44
+    'pa-risc'   => 'hpux',
  45
+    's390'      => 'os390',
  46
+    'VMS_'      => 'vms',
  47
+    'ARCHREV_0' => 'hpux',
  48
+);
  49
+
  50
+#----------------------------------------------------------------------------
  51
+# The Public API
  52
+
  53
+__PACKAGE__->mk_accessors(qw(
  54
+                    postdate date epoch status from distribution version
  55
+                    perl osname osvers archname subject author filename));
  56
+
  57
+sub new {
  58
+    my($class, $article) = @_;
  59
+    my $self = {};
  60
+    bless $self, $class;
  61
+
  62
+    $article = decode_qp($article)	if($article =~ /=3D/);
  63
+
  64
+    my $mail = Email::Simple->new($article);
  65
+    return unless $mail;
  66
+    return if $mail->header("In-Reply-To");
  67
+
  68
+    my $from    = $mail->header("From");
  69
+    my $subject = $mail->header("Subject");
  70
+    return unless $subject;
  71
+    return if $subject =~ /::/; # it's supposed to be a distribution
  72
+
  73
+    $self->{mail}    = $mail;
  74
+    $self->{from}    = $from;
  75
+    $self->{subject} = $subject;
  76
+
  77
+    ($self->{postdate},$self->{date},$self->{epoch}) = $self->_parse_date($mail);
  78
+
  79
+    return $self;
  80
+}
  81
+
  82
+sub parse_upload {
  83
+    my $self = shift;
  84
+    my $mail = $self->{mail};
  85
+    my $subject = $self->{subject};
  86
+
  87
+    return 0	unless($subject =~ /CPAN Upload:\s+([-\w\/\.\+]+)/i);
  88
+    my $distvers = $1;
  89
+
  90
+    # only record supported archives
  91
+    return 0    if($distvers !~ /\.(?:(?:tar\.|t)(?:gz|bz2)|zip)$/);
  92
+
  93
+    # CPAN::DistnameInfo doesn't support .tar.bz2 files ... yet
  94
+    $distvers =~ s/\.(?:tar\.|t)bz2$//i;
  95
+    $distvers .= '.tar.gz' unless $distvers =~ /\.(?:(?:tar\.|t)gz|zip)$/i;
  96
+
  97
+    # CPAN::DistnameInfo doesn't support old form of uploads
  98
+    my @parts = split("/",$distvers);
  99
+    if(@parts == 2) {
  100
+        my ($first,$second,$rest) = split(//,$distvers,3);
  101
+        $distvers = "$first/$first$second/$first$second$rest";
  102
+    }
  103
+
  104
+    my $d = CPAN::DistnameInfo->new($distvers);
  105
+    $self->distribution($d->dist);
  106
+    $self->version($d->version);
  107
+    $self->author($d->cpanid);
  108
+    $self->filename($d->filename);
  109
+
  110
+    return 1;
  111
+}
  112
+
  113
+sub parse_report {
  114
+    my $self = shift;
  115
+    my $mail = $self->{mail};
  116
+    my $from = $self->{from};
  117
+    my $subject = $self->{subject};
  118
+
  119
+    my ($status, $distversion, $platform, $osver) = split /\s+/, $subject;
  120
+    return 0  unless $status =~ /^(PASS|FAIL|UNKNOWN|NA)$/i;
  121
+
  122
+    $platform ||= "";
  123
+    $platform =~ s/[\s&,<].*//;
  124
+
  125
+    $distversion =~ s!/$!!;
  126
+    $distversion =~ s/\.tar.*/.tar.gz/;
  127
+    $distversion .= '.tar.gz' unless $distversion =~ /\.(tar|tgz|zip)/;
  128
+
  129
+    my $d = CPAN::DistnameInfo->new($distversion);
  130
+    my ($dist, $version) = ($d->dist, $d->version);
  131
+    return 0 unless defined $dist;
  132
+    return 0 unless defined $version;
  133
+
  134
+    my $encoding = $mail->header('Content-Transfer-Encoding');
  135
+
  136
+    my $body = $mail->body;
  137
+    $body = decode_base64($body)  if($encoding && $encoding eq 'base64');
  138
+
  139
+    my $perl = $self->_extract_perl_version(\$body);
  140
+
  141
+    my ($osname)   = $body =~ /(?:Summary of my perl5|Platform:).*?osname=([^\s\n,<\']+)/s;
  142
+    my ($osvers)   = $body =~ /(?:Summary of my perl5|Platform:).*?osvers=([^\s\n,<\']+)/s;
  143
+    my ($archname) = $body =~ /(?:Summary of my perl5|Platform:).*?archname=([^\s\n&,<\']+)/s;
  144
+    $archname =~ s/\n.*//	if($archname);
  145
+
  146
+    $self->status($status);
  147
+    $self->distribution($dist);
  148
+    $self->version($version);
  149
+    $self->from($from || "");
  150
+    $self->perl($perl);
  151
+    $self->filename($d->filename);
  152
+
  153
+    unless($archname || $platform) {
  154
+  	    if($osname && $osvers)	{ $platform = "$osname-$osvers" }
  155
+	    elsif($osname)		    { $platform = $osname }
  156
+    }
  157
+
  158
+    unless($osname) {
  159
+        for my $text ($platform, $archname) {
  160
+            next    unless($text);
  161
+            if($text =~ $OSNAMES) {
  162
+                $osname = $1;
  163
+            } else {
  164
+                for my $rx (keys %OSNAMES) {
  165
+                    if($text =~ /$rx/i) {
  166
+                        $osname = $OSNAMES{$rx};
  167
+                        last;
  168
+                    }
  169
+                }
  170
+            }
  171
+            last    if($osname);
  172
+        }
  173
+    }
  174
+
  175
+    $osvers ||= $osver;
  176
+
  177
+    $self->osname($osname || "");
  178
+    $self->osvers($osvers || "");
  179
+    $self->archname($archname || $platform);
  180
+
  181
+    return 1;
  182
+}
  183
+
  184
+sub passed {
  185
+    my $self = shift;
  186
+    return $self->status eq 'PASS';
  187
+}
  188
+
  189
+sub failed {
  190
+    my $self = shift;
  191
+    return $self->status eq 'FAIL';
  192
+}
  193
+
  194
+#----------------------------------------------------------------------------
  195
+# The Private Methods
  196
+
  197
+sub _parse_date {
  198
+    my ($self,$mail) = @_;
  199
+    my ($date1,$date2,$date3) = $self->_extract_date($mail->header("Date"));
  200
+    my @received  = $mail->header("Received");
  201
+
  202
+    for my $hdr (@received) {
  203
+        next    unless($hdr =~ /.*;\s+(.*)\s*$/);
  204
+        my ($dt1,$dt2,$dt3) = $self->_extract_date($1);
  205
+        if($dt2 > $date2 + 1200) {
  206
+            $date1 = $dt1;
  207
+            $date2 = $dt2;
  208
+            $date3 = $dt3;
  209
+        }
  210
+    }
  211
+
  212
+#print STDERR "        ... X.[Date: ".($date||'')."]\n";
  213
+    return($date1,$date2,$date3);
  214
+}
  215
+
  216
+sub _extract_date {
  217
+    my ($self,$date) = @_;
  218
+    my (%fields,@fields,$index);
  219
+
  220
+#print STDERR "#        ... 0.[Date: ".($date||'')."]\n";
  221
+
  222
+    for my $inx (sort {$a <=> $b} keys %regexes) {
  223
+        (@fields) = ($date =~ $regexes{$inx}->{re});
  224
+        if(@fields) {
  225
+            $index = $inx;
  226
+            last;
  227
+        }
  228
+    }
  229
+
  230
+    return('000000','000000000000',0) unless(@fields && $index);
  231
+
  232
+    @fields{@{$regexes{$index}->{f}}} = @fields;
  233
+
  234
+    $fields{month} = substr($fields{month},0,3);
  235
+    $fields{mon}   = $month{$fields{month}};
  236
+    return('000000','000000000000',0) unless($fields{mon} && $fields{year} > 1998);
  237
+
  238
+    $fields{$_} ||= 0          for(qw(sec min hour day mon year));
  239
+    my @date = map { $fields{$_} } qw(sec min hour day mon year);
  240
+
  241
+#print STDERR "#        ... 1.[$_][$fields{$_}]\n"   for(qw(year month day hour min));
  242
+    my $short = sprintf "%04d%02d",             $fields{year}, $fields{mon};
  243
+    my $long  = sprintf "%04d%02d%02d%02d%02d", $fields{year}, $fields{mon}, $fields{day}, $fields{hour}, $fields{min};
  244
+    $date[4]--;
  245
+    my $epoch = timelocal(@date);
  246
+
  247
+    return($short,$long,$epoch);
  248
+}
  249
+
  250
+# there are a few old test reports that omitted the perl version number.
  251
+# In these instances 0 is assumed. These reports are now so old, that
  252
+# worrying about them is not worth the effort.
  253
+
  254
+sub _extract_perl_version {
  255
+    my ($self, $body) = @_;
  256
+
  257
+    # Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
  258
+    # Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
  259
+    my ($rev, $ver, $sub, $extra) =
  260
+        $$body =~ /Summary of my (?:perl(?:\d+)?)? \((?:revision )?(\d+(?:\.\d+)?) (?:version|patchlevel) (\d+) subversion\s+(\d+) ?(.*?)\) configuration/si;
  261
+
  262
+    if(defined $rev) {
  263
+        my $perl = $rev + ($ver / 1000) + ($sub / 1000000);
  264
+        $rev = int($perl);
  265
+        $ver = int(($perl*1000)%1000);
  266
+        $sub = int(($perl*1000000)%1000);
  267
+
  268
+        my $version = sprintf "%d.%d.%d", $rev, $ver, $sub;
  269
+        $version .= " $extra" if $extra;
  270
+        return $version;
  271
+    #   return sprintf "%0.6f", $perl;	# an alternate format
  272
+    }
  273
+
  274
+    # the following is experimental and may provide incorrect data
  275
+
  276
+    ($rev, $ver, $sub) =
  277
+        $$body =~ m!/(?:(?:site_perl|perl|perl5|\.?cpanplus)/|perl-)(5)\.?([6-9]|1[0-2])\.?(\d+)/!;
  278
+    if(defined $rev) {
  279
+        my $version = sprintf "%d.%d.%d", $rev, $ver, $sub;
  280
+        return $version;
  281
+    }
  282
+
  283
+
  284
+#    warn "Cannot parse perl version for article:\n$body";
  285
+    return 0;
  286
+}
  287
+
  288
+1;
  289
+
  290
+__END__
  291
+
  292
+=head1 NAME
  293
+
  294
+CPAN::Testers::Common::Article - Parse a CPAN Testers NNTP article
  295
+
  296
+=head1 DESCRIPTION
  297
+
  298
+Given an NNTP article from the cpan-testers or cpan-uploads feed, will parse
  299
+and return the appropriate the data parts via accessors.
  300
+
  301
+=head1 INTERFACE
  302
+
  303
+=head2 The Constructor
  304
+
  305
+=over 4
  306
+
  307
+=item * new
  308
+
  309
+The constructor. Pass in a reference to the article.
  310
+
  311
+=back
  312
+
  313
+=head2 Methods
  314
+
  315
+=over 4
  316
+
  317
+=item * parse_upload
  318
+
  319
+Parses an upload article.
  320
+
  321
+=item * parse_report
  322
+
  323
+Parses a report article.
  324
+
  325
+=item * passed
  326
+
  327
+Whether the report was a PASS
  328
+
  329
+=item * failed
  330
+
  331
+Whether the report was a FAIL
  332
+
  333
+=back
  334
+
  335
+=head2 Accessors
  336
+
  337
+All the following are accessors available through via the object, once an
  338
+article has been parsed as a report or upload announcement.
  339
+
  340
+=over 4
  341
+
  342
+=item * postdate
  343
+
  344
+'YYYYMM' representation of the date article was posted.
  345
+
  346
+=item * date
  347
+
  348
+'YYYYMMDDhhmm' representation of the date article was posted.
  349
+
  350
+=item * status
  351
+
  352
+For reports this will be the grade, for uploads this will be 'CPAN'.
  353
+
  354
+=item * from
  355
+
  356
+Who posted the article.
  357
+
  358
+=item * distribution
  359
+
  360
+The distribution name.
  361
+
  362
+=item * version
  363
+
  364
+The distribution version.
  365
+
  366
+=item * perl
  367
+
  368
+The perl interpreter version used for testing.
  369
+
  370
+=item * osname
  371
+
  372
+Operating system name.
  373
+
  374
+=item * osvers
  375
+
  376
+Operating system version.
  377
+
  378
+=item * archname
  379
+
  380
+Operating system architecture name. This is usually based on the osname and
  381
+osvers, but they are not always the same.
  382
+
  383
+=item * subject
  384
+
  385
+Subject line of the original post.
  386
+
  387
+=back
  388
+
  389
+=head1 BUGS, PATCHES & FIXES
  390
+
  391
+There are no known bugs at the time of this release. However, if you spot a
  392
+bug or are experiencing difficulties, that is not explained within the POD
  393
+documentation, please send bug reports and patches to the RT Queue (see below).
  394
+
  395
+Fixes are dependant upon their severity and my availablity. Should a fix not
  396
+be forthcoming, please feel free to (politely) remind me.
  397
+
  398
+RT Queue -
  399
+http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Testers-Common-Article
  400
+
  401
+=head1 SEE ALSO
  402
+
  403
+L<CPAN::Testers::Data::Generator>,
  404
+L<CPAN::Testers::Data::Uploads>
  405
+
  406
+F<http://www.cpantesters.org/>,
  407
+F<http://stats.cpantesters.org/>,
  408
+F<http://wiki.cpantesters.org/>
  409
+
  410
+=head1 AUTHOR
  411
+
  412
+  Original author:    Leon Brocard <acme@astray.com>   (C) 2002-2008
  413
+  Current maintainer: Barbie       <barbie@cpan.org>   (C) 2008-2009
  414
+
  415
+=head1 LICENSE
  416
+
  417
+This code is distributed under the same license as Perl.
8  t/01base.t
... ...
@@ -0,0 +1,8 @@
  1
+#!/usr/bin/perl -w
  2
+use strict;
  3
+
  4
+use Test::More tests => 1;
  5
+
  6
+BEGIN {
  7
+	use_ok( 'CPAN::Testers::Common::Article' );
  8
+}
65  t/10functions.t
... ...
@@ -0,0 +1,65 @@
  1
+#!/usr/bin/perl -w
  2
+use strict;
  3
+use Test::More tests => 17;
  4
+use CPAN::Testers::Common::Article;
  5
+use IO::File;
  6
+
  7
+my @perls = (
  8
+  {
  9
+    text => 'Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration',
  10
+    perl => '5.6.1'
  11
+  },
  12
+  {
  13
+    text => 'Summary of my perl5 (revision a version b subversion c) configuration',
  14
+    perl => '0'
  15
+  },
  16
+  {
  17
+    text => 'Summary of my perl5 (revision 5.0 version 8 subversion 0 patch 17332) configuration',
  18
+    perl => '5.8.0 patch 17332',
  19
+  },
  20
+  {
  21
+    text => 'Summary of my perl5 (revision 5.0 version 8 subversion 1 RC3) configuration',
  22
+    perl => '5.8.1 RC3',
  23
+  },
  24
+#  {
  25
+#    text => '',
  26
+#    perl => '',
  27
+#  },
  28
+);
  29
+
  30
+my $article = readfile('t/nntp/126015.txt');
  31
+my $ctca = CPAN::Testers::Common::Article->new($article);
  32
+isa_ok($ctca,'CPAN::Testers::Common::Article');
  33
+
  34
+for(@perls) {
  35
+  my $text = $_->{text};
  36
+  my $perl = $_->{perl};
  37
+
  38
+  my $version = $ctca->_extract_perl_version(\$text);
  39
+  is($version, $perl);
  40
+}
  41
+
  42
+my @testdates = (
  43
+    ['Wed, 13 September 2004','200409','200409130000'],
  44
+    ['13 September 2004','200409','200409130000'],
  45
+    ['September 22, 1999 06:29','199909','199909220629'],
  46
+
  47
+    ['Wed, 13 September 1990','000000','000000000000'],
  48
+    ['13 September 1990','000000','000000000000'],
  49
+    ['September 22, 1990 06:29','000000','000000000000'],
  50
+);
  51
+
  52
+for my $row (@testdates) {
  53
+    my ($d1,$d2) = $ctca->_extract_date($row->[0]);
  54
+    is($d1,$row->[1],".. short date parse of '$row->[0]'");
  55
+    is($d2,$row->[2],".. long date parse of '$row->[0]'");
  56
+}
  57
+
  58
+sub readfile {
  59
+    my $file = shift;
  60
+    my $text;
  61
+    my $fh = IO::File->new($file)   or return;
  62
+    while(<$fh>) { $text .= $_ }
  63
+    $fh->close;
  64
+    return $text;
  65
+}
120  t/11article.t
... ...
@@ -0,0 +1,120 @@
  1
+#!/usr/bin/perl -w
  2
+use strict;
  3
+
  4
+use lib 'lib';
  5
+use Test::More tests => 39;
  6
+use IO::File;
  7
+
  8
+use_ok('CPAN::Testers::Common::Article');
  9
+
  10
+# PASS report
  11
+my $article = readfile('t/nntp/126015.txt');
  12
+my $a = CPAN::Testers::Common::Article->new($article);
  13
+isa_ok($a,'CPAN::Testers::Common::Article');
  14
+ok($a->parse_report());
  15
+is($a->from, 'Jost.Krieger+perl@rub.de (Jost Krieger+Perl)');
  16
+is($a->postdate, '200403');
  17
+is($a->date, '200403081025');
  18
+is($a->status, 'PASS');
  19
+ok($a->passed);
  20
+ok(!$a->failed);
  21
+is($a->distribution, 'AI-Perceptron');
  22
+is($a->version, '1.0');
  23
+is($a->perl, '5.8.3');
  24
+is($a->osname, 'solaris');
  25
+is($a->osvers, '2.8');
  26
+is($a->archname, 'sun4-solaris-thread-multi');
  27
+
  28
+# FAIL report
  29
+$article = readfile('t/nntp/125106.txt');
  30
+$a = CPAN::Testers::Common::Article->new($article);
  31
+isa_ok($a,'CPAN::Testers::Common::Article');
  32
+ok($a->parse_report());
  33
+is($a->from, 'cpansmoke@alternation.net');
  34
+is($a->postdate, '200403');
  35
+is($a->date, '200403030607');
  36
+is($a->status, 'FAIL');
  37
+ok(!$a->passed);
  38
+ok($a->failed);
  39
+is($a->distribution, 'Net-IP-Route-Reject');
  40
+is($a->version, '0.5_1');
  41
+is($a->perl, '5.8.0');
  42
+is($a->osname, 'linux');
  43
+is($a->osvers, '2.4.22-4tr');
  44
+is($a->archname, 'i586-linux');
  45
+
  46
+ok(!$a->parse_upload());
  47
+
  48
+
  49
+# upload announcement
  50
+$article = readfile('t/nntp/1804993.txt');
  51
+$a = CPAN::Testers::Common::Article->new($article);
  52
+isa_ok($a,'CPAN::Testers::Common::Article');
  53
+ok($a->parse_upload());
  54
+is($a->from, 'upload@pause.perl.org (PAUSE)');
  55
+is($a->postdate, '200806');
  56
+is($a->date, '200806271438');
  57
+is($a->distribution, 'Test-CPAN-Meta');
  58
+is($a->version, '0.12');
  59
+
  60
+ok(!$a->parse_report());
  61
+
  62
+
  63
+# in reply to
  64
+$article = readfile('t/nntp/1805500.txt');
  65
+$a = CPAN::Testers::Common::Article->new($article);
  66
+ok(!$a);
  67
+
  68
+exit;
  69
+
  70
+
  71
+# base64
  72
+$article = readfile('t/nntp/1804993.txt');
  73
+$a = CPAN::Testers::Common::Article->new($article);
  74
+isa_ok($a,'CPAN::Testers::Common::Article');
  75
+ok(!$a->parse_upload());
  76
+ok($a->parse_report());
  77
+is($a->from, 'cpansmoke@alternation.net');
  78
+is($a->postdate, '200403');
  79
+is($a->date, '200403000000');
  80
+is($a->status, 'FAIL');
  81
+ok(!$a->passed);
  82
+ok($a->failed);
  83
+is($a->distribution, 'Net-IP-Route-Reject');
  84
+is($a->version, '0.5_1');
  85
+is($a->perl, '5.8.0');
  86
+is($a->osname, 'linux');
  87
+is($a->osvers, '2.4.22-4tr');
  88
+is($a->archname, 'i586-linux');
  89
+
  90
+
  91
+
  92
+# quoted printable
  93
+$article = readfile('t/nntp/1804993.txt');
  94
+$a = CPAN::Testers::Common::Article->new($article);
  95
+isa_ok($a,'CPAN::Testers::Common::Article');
  96
+ok(!$a->parse_upload());
  97
+ok($a->parse_report());
  98
+is($a->from, 'cpansmoke@alternation.net');
  99
+is($a->postdate, '200403');
  100
+is($a->date, '200403000000');
  101
+is($a->status, 'FAIL');
  102
+ok(!$a->passed);
  103
+ok($a->failed);
  104
+is($a->distribution, 'Net-IP-Route-Reject');
  105
+is($a->version, '0.5_1');
  106
+is($a->perl, '5.8.0');
  107
+is($a->osname, 'linux');
  108
+is($a->osvers, '2.4.22-4tr');
  109
+is($a->archname, 'i586-linux');
  110
+
  111
+
  112
+
  113
+sub readfile {
  114
+    my $file = shift;
  115
+    my $text;
  116
+    my $fh = IO::File->new($file)   or return;
  117
+    while(<$fh>) { $text .= $_ }
  118
+    $fh->close;
  119
+    return $text;
  120
+}
10  t/90podtest.t
... ...
@@ -0,0 +1,10 @@
  1
+use Test::More;
  2
+
  3
+# Skip if doing a regular install
  4
+plan skip_all => "Author tests not required for installation"
  5
+    unless ( $ENV{AUTOMATED_TESTING} );
  6
+
  7
+eval "use Test::Pod 1.00";
  8
+plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
  9
+all_pod_files_ok();
  10
+
9  t/91podcover.t
... ...
@@ -0,0 +1,9 @@
  1
+use Test::More;
  2
+
  3
+# Skip if doing a regular install
  4
+plan skip_all => "Author tests not required for installation"
  5
+    unless ( $ENV{AUTOMATED_TESTING} );
  6
+
  7
+eval "use Test::Pod::Coverage 0.08";
  8
+plan skip_all => "Test::Pod::Coverage 0.08 required for testing POD coverage" if $@;
  9
+all_pod_coverage_ok();
11  t/94metatest.t
... ...
@@ -0,0 +1,11 @@
  1
+use Test::More;
  2
+
  3
+# Skip if doing a regular install
  4
+plan skip_all => "Author tests not required for installation"
  5
+    unless ( $ENV{AUTOMATED_TESTING} );
  6
+
  7
+eval "use Test::CPAN::Meta 0.12";
  8
+plan skip_all => "Test::CPAN::Meta 0.12 required for testing META.yml" if $@;
  9
+meta_yaml_ok();
  10
+
  11
+
129  t/nntp/125106.txt
... ...
@@ -0,0 +1,129 @@
  1
+Newsgroups: perl.cpan.testers
  2
+Path: nntp.perl.org
  3
+Xref: nntp.perl.org perl.cpan.testers:125106
  4
+Return-Path: <root@red13.alternation.net>
  5
+    Mailing-List: contact cpan-testers-help@perl.org; run by ezmlm
  6
+Delivered-To: mailing list cpan-testers@perl.org
  7
+Received: (qmail 27157 invoked by uid 76); 3 Mar 2004 10:08:20 -0000
  8
+Received: from x1.develooper.com (HELO x1.develooper.com) (63.251.223.170) by onion.perl.org (qpsmtpd/0.26) with SMTP; Wed, 03 Mar 2004 02:08:20 -0800
  9
+Received: (qmail 1721 invoked by uid 225); 3 Mar 2004 10:08:15 -0000
  10
+Delivered-To: cpan-testers@perl.org
  11
+Received: (qmail 1621 invoked by alias); 3 Mar 2004 10:07:53 -0000
  12
+Received: from [24.230.212.16] (HELO red13.alternation.net) (24.230.212.16)  by la.mx.develooper.com (qpsmtpd/0.27-dev) with ESMTP; Wed, 03 Mar 2004 02:07:53 -0800
  13
+Received: by red13.alternation.net (Postfix, from userid 0)     id BE6DC4026D; Wed,  3 Mar 2004 06:07:54 -0400 (AST)
  14
+Cc: DHUDES@cpan.org
  15
+Subject: FAIL Net-IP-Route-Reject-0.5_1 i586-linux 2.4.22-4tr
  16
+To: cpan-testers@perl.org
  17
+X-Reported-Via: Test::Reporter 1.20, via CPANPLUS 0.048
  18
+Message-ID: <20040303100754.BE6DC4026D@red13.alternation.net>
  19
+Date: Wed,  3 Mar 2004 06:07:54 -0400 (AST)
  20
+X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on x1.develooper.com
  21
+X-Spam-Status: No, hits=-8.7 required=8.0 tests=BAYES_00,NO_REAL_NAME,  PERLBUG_CONF autolearn=ham version=2.63
  22
+X-SMTPD: qpsmtpd/0.26, http://develooper.com/code/qpsmtpd/
  23
+Approved: news@nntp.perl.org
  24
+From: cpansmoke@alternation.net
  25
+
  26
+This distribution has been tested as part of the cpan-testers
  27
+effort to test as many new uploads to CPAN as possible.  See
  28
+http://testers.cpan.org/
  29
+
  30
+Please cc any replies to cpan-testers@perl.org to keep other
  31
+test volunteers informed and to prevent any duplicate effort.
  32
+
  33
+--
  34
+This is an error report generated automatically by CPANPLUS,
  35
+version 0.048.
  36
+
  37
+Below is the error stack during 'make test':
  38
+
  39
+t/001_load....#     Failed test (t/001_load.t at line 7)
  40
+#     Tried to use 'Net::IP::Route::Reject'.
  41
+#     Error:  Can't locate Module/Load.pm in @INC (@INC contains: /root/.cpanplus/5.8.0/build/Net-IP-Route-Reject-0.5/blib/lib /root/.cpanplus/5.8.0/build/Net-IP-Route-Reject-0.5/blib/arch /usr/lib/perl5/5.8.0/i586-linux /usr/lib/perl5/5.8.0/i586-linux /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i586-linux /usr/lib/perl5/site_perl/5.8.0/i586-linux /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i586-linux /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i586-linux /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl /root/.cpanplus/5.8.0/build/Net-IP-Route-Reject-0.5 /usr/lib/perl5/5.8.0/i586-linux /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i586-linux /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i586-linux /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at /usr/lib/perl5/site_perl/5.8.0/Module/Load/Conditional.pm line 5.
  42
+# BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.0/Module/Load/Conditional.pm line 5.
  43
+# Compilation failed in require at /usr/lib/perl5/site_perl/5.8.0/IPC/Cmd.pm line 4.
  44
+# BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.0/IPC/Cmd.pm line 4.
  45
+# Compilation failed in require at /root/.cpanplus/5.8.0/build/Net-IP-Route-Reject-0.5/blib/lib/Net/IP/Route/Reject.pm line 4.
  46
+# BEGIN failed--compilation aborted at /root/.cpanplus/5.8.0/build/Net-IP-Route-Reject-0.5/blib/lib/Net/IP/Route/Reject.pm line 4.
  47
+# Compilation failed in require at (eval 1) line 2.
  48
+Can't locate object method "add" via package "Net::IP::Route::Reject" at t/001_load.t line 9.
  49
+# Looks like you planned 2 tests but only ran 1.
  50
+# Looks like your test died just after 1.
  51
+dubious
  52
+        Test returned status 255 (wstat 65280, 0xff00)
  53
+DIED. FAILED tests 1-2
  54
+        Failed 2/2 tests, 0.00% okay
  55
+Failed 1/1 test scripts, 0.00% okay. 2/2 subtests failed, 0.00% okay.
  56
+Failed Test  Stat Wstat Total Fail  Failed  List of Failed
  57
+-------------------------------------------------------------------------------
  58
+t/001_load.t  255 65280     2    3 150.00%  1-2
  59
+
  60
+
  61
+Additional comments:
  62
+
  63
+Hello, Dana Hudes! Thanks for uploading your works to CPAN.
  64
+
  65
+I noticed that the test suite seem to fail without these modules:
  66
+
  67
+Module::Load
  68
+
  69
+As such, adding the prerequisite module(s) to 'PREREQ_PM' in your
  70
+Makefile.PL should solve this problem.  For example:
  71
+
  72
+WriteMakefile(
  73
+    AUTHOR      => 'Dana Hudes (dhudes@hudes.org)',
  74
+    ... # other information
  75
+    PREREQ_PM   => {
  76
+        'Module::Load'  => '0', # or a minimum workable version
  77
+    }
  78
+);
  79
+
  80
+If you are interested in making a more flexible Makefile.PL that can
  81
+probe for missing dependencies and install them, ExtUtils::AutoInstall
  82
+at <http://search.cpan.org/dist/ExtUtils-AutoInstall/> may be
  83
+worth a look.
  84
+
  85
+Thanks! :-)
  86
+
  87
+******************************** NOTE ********************************
  88
+The comments above are created mechanically, possibly without manual
  89
+checking by the sender.  Also, because many people perform automatic
  90
+tests on CPAN, chances are that you will receive identical messages
  91
+about the same problem.
  92
+
  93
+If you believe that the message is mistaken, please reply to the first
  94
+one with correction and/or additional information, and do not take
  95
+it personally.  We appreciate your patience. :)
  96
+**********************************************************************
  97
+
  98
+--
  99
+
  100
+Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
  101
+  Platform:
  102
+    osname=linux, osvers=2.4.22-4tr, archname=i586-linux
  103
+    uname='linux borgen.trustix.net 2.4.22-4tr #1 wed oct 29 17:17:31 cet 2003 i686 unknown unknown gnulinux '
  104
+    config_args='-des -Doptimize=-O3 -fomit-frame-pointer -fno-exceptions -pipe -s -mpentium -mcpu=pentium -march=pentium -ffast-math -fexpensive-optimizations -Dcc=gcc -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr -Dcf_by=Trustix -Dmyhostname=localhost -Dperladmin=root@localhost -Darchname=i586-linux -Dd_dosuid -Duselargefiles=n -Dd_semctl_semun -Ui_db -Di_gdbm -Dman3dir=/usr/share/man/man3 -Dman1dir=/usr/share/man/man1'
  105
+    hint=recommended, useposix=true, d_sigaction=define
  106
+    usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
  107
+    useperlio=define d_sfio=undef uselargefiles=undef usesocks=undef
  108
+    use64bitint=undef use64bitall=undef uselongdouble=undef
  109
+    usemymalloc=n, bincompat5005=undef
  110
+  Compiler:
  111
+    cc='gcc', ccflags ='-fno-strict-aliasing -I/usr/include/gdbm',
  112
+    optimize='-O3 -fomit-frame-pointer -fno-exceptions -pipe -s -mpentium -mcpu=pentium -march=pentium -ffast-math -fexpensive-optimizations',
  113
+    cppflags='-fno-strict-aliasing -I/usr/include/gdbm'
  114
+    ccversion='', gccversion='3.3', gccosandvers=''
  115
+    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
  116
+    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
  117
+    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=4
  118
+    alignbytes=4, prototype=define
  119
+  Linker and Libraries:
  120
+    ld='gcc', ldflags =' -L/usr/local/lib'
  121
+    libpth=/usr/local/lib /lib /usr/lib
  122
+    libs=-lnsl -lgdbm -ldb -ldl -lm -lc -lcrypt -lutil
  123
+    perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil
  124
+    libc=/lib/libc-2.3.2.so, so=so, useshrplib=false, libperl=libperl.a
  125
+    gnulibc_version='2.3.2'
  126
+  Dynamic Linking:
  127
+    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
  128
+    cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
  129
+
64  t/nntp/126015.txt
... ...
@@ -0,0 +1,64 @@
  1
+Newsgroups: perl.cpan.testers
  2
+Path: nntp.perl.org
  3
+Return-Path: <Jost.Krieger+perl@rub.de>
  4
+Mailing-List: contact cpan-testers-help@perl.org; run by ezmlm
  5
+Delivered-To: mailing list cpan-testers@perl.org
  6
+Received: (qmail 67805 invoked by uid 76); 8 Mar 2004 09:25:53 -0000
  7
+Received: from qmailr@one.develooper.com (HELO ran-out.mx.develooper.com) (64.81.84.115)
  8
+  by onion.perl.org (qpsmtpd/0.27-dev) with SMTP; Mon, 08 Mar 2004 01:25:53 -0800
  9
+Received: (qmail 15837 invoked by uid 225); 8 Mar 2004 09:25:51 -0000
  10
+Delivered-To: cpan-testers@perl.org
  11
+Received: (qmail 15832 invoked by uid 507); 8 Mar 2004 09:25:51 -0000
  12
+X-Spam-Status: No, hits=-1.6 required=7.0
  13
+        tests=CARRIAGE_RETURNS,NO_REAL_NAME,PERLBUG_CONF,SPAM_PHRASE_00_01
  14
+X-Spam-Check-By: one.develooper.com
  15
+Received: from sunu991.rz.ruhr-uni-bochum.de (HELO mi.ruhr-uni-bochum.de) (134.147.128.177)
  16
+  by one.develooper.com (qpsmtpd/0.27.0) with ESMTP; Mon, 08 Mar 2004 01:25:20 -0800
  17
+Date: Mon,  8 Mar 2004 10:25:20 +0100
  18
+Subject: PASS AI-Perceptron-1.0 sun4-solaris-thread-multi 2.8
  19
+To: cpan-testers@perl.org
  20
+X-Reported-Via: Test::Reporter 1.20, via CPANPLUS 0.049
  21
+Approved: news@nntp.perl.org
  22
+From: Jost.Krieger+perl@rub.de (Jost Krieger+Perl)
  23
+Message-ID: <perl.cpan.testers-126015@nntp.perl.org>
  24
+
  25
+This distribution has been tested as part of the cpan-testers
  26
+effort to test as many new uploads to CPAN as possible.  See
  27
+http://testers.cpan.org/
  28
+
  29
+Please cc any replies to cpan-testers@perl.org to keep other
  30
+test volunteers informed and to prevent any duplicate effort.
  31
+
  32
+
  33
+--
  34
+
  35
+Summary of my perl5 (revision 5.0 version 8 subversion 3) configuration:
  36
+  Platform:
  37
+    osname=solaris, osvers=2.8, archname=sun4-solaris-thread-multi
  38
+    uname='sunos sunu991 5.8 generic_108528-14 sun4u sparc sunw,ultra-5_10 solaris '
  39
+    config_args=''
  40
+    hint=recommended, useposix=true, d_sigaction=define
  41
+    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
  42
+    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
  43
+    use64bitint=undef use64bitall=undef uselongdouble=undef
  44
+    usemymalloc=n, bincompat5005=undef
  45
+  Compiler:
  46
+    cc='gcc', ccflags ='-D_REENTRANT -fno-strict-aliasing -I/usr/local/test/include -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  47
+    optimize='-O',
  48
+    cppflags='-D_REENTRANT -fno-strict-aliasing -I/usr/local/test/include -I/usr/local/include'
  49
+    ccversion='', gccversion='3.3.2', gccosandvers='solaris2.8'
  50
+    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
  51
+    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  52
+    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  53
+    alignbytes=8, prototype=define
  54
+  Linker and Libraries:
  55
+    ld='gcc', ldflags ='-L/usr/local/test/lib -L/usr/local/lib '
  56
+    libpth=/usr/local/test/lib /usr/local/lib /usr/lib /usr/ccs/lib
  57
+    libs=-lsocket -lnsl -lgdbm -ldb -ldl -lm -lpthread -lc
  58
+    perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
  59
+    libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
  60
+    gnulibc_version=''
  61
+  Dynamic Linking:
  62
+    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
  63
+    cccdlflags='-fPIC', lddlflags='-G -L/usr/local/test/lib -L/usr/local/lib'
  64
+
52  t/nntp/1804993.txt
... ...
@@ -0,0 +1,52 @@
  1
+Newsgroups: perl.cpan.testers,perl.cpan.uploads
  2
+Path: nntp.perl.org
  3
+Xref: nntp.perl.org perl.cpan.testers:1804993 perl.cpan.uploads:7211
  4
+Return-Path: <root@pause.perl.org>
  5
+Mailing-List: contact cpan-testers-help@perl.org; run by ezmlm
  6
+Delivered-To: mailing list cpan-testers@perl.org
  7
+Received: (qmail 15656 invoked from network); 27 Jun 2008 12:38:55 -0000
  8
+Received: from x1a.develooper.com (HELO x1.develooper.com) (216.52.237.111)
  9
+  by x6.develooper.com with SMTP; 27 Jun 2008 12:38:55 -0000
  10
+Received: (qmail 5114 invoked by uid 225); 27 Jun 2008 12:38:53 -0000
  11
+Delivered-To: cpan-testers@perl.org
  12
+Received: (qmail 5105 invoked by alias); 27 Jun 2008 12:38:53 -0000
  13
+X-Spam-Status: No, hits=-2.6 required=8.0
  14
+	tests=BAYES_00
  15
+X-Spam-Check-By: la.mx.develooper.com
  16
+Received: from pause.fiz-chemie.de (HELO pause.perl.org) (195.149.117.110)
  17
+    by la.mx.develooper.com (qpsmtpd/0.28) with ESMTP; Fri, 27 Jun 2008 05:38:51 -0700
  18
+Received: from pause.perl.org (localhost.localdomain [127.0.0.1])
  19
+	by pause.perl.org (8.13.8/8.13.8/Debian-3) with ESMTP id m5RCckWU027029;
  20
+	Fri, 27 Jun 2008 14:38:46 +0200
  21
+Received: (from root@localhost)
  22
+	by pause.perl.org (8.13.8/8.13.8/Submit) id m5RCckhb027028;
  23
+	Fri, 27 Jun 2008 14:38:46 +0200
  24
+Date: Fri, 27 Jun 2008 14:38:46 +0200
  25
+Message-ID: <200806271238.m5RCckhb027028@pause.perl.org>
  26
+MIME-Version: 1.0
  27
+Subject: CPAN Upload: B/BA/BARBIE/Test-CPAN-Meta-0.12.tar.gz
  28
+Content-Type: Text/Plain; Charset=UTF-8
  29
+Reply-To: cpan-uploads@perl.org
  30
+To: cpan-testers@perl.org, cpan-uploads@perl.org
  31
+Content-Transfer-Encoding: 8bit
  32
+From: upload@pause.perl.org (PAUSE)
  33
+
  34
+The uploaded file
  35
+
  36
+    Test-CPAN-Meta-0.12.tar.gz
  37
+
  38
+has entered CPAN as
  39
+
  40
+  file: $CPAN/authors/id/B/BA/BARBIE/Test-CPAN-Meta-0.12.tar.gz
  41
+  size: 16132 bytes
  42
+   md5: f734933622757cf00361e08189a1e7ce
  43
+
  44
+No action is required on your part
  45
+Request entered by: BARBIE (Barbie)
  46
+Request entered on: Fri, 27 Jun 2008 12:38:23 GMT
  47
+Request completed:  Fri, 27 Jun 2008 12:38:46 GMT
  48
+
  49
+Thanks,
  50
+-- 
  51
+paused, v1016
  52
+
77  t/nntp/1805500.txt
... ...
@@ -0,0 +1,77 @@
  1
+Newsgroups: perl.cpan.testers
  2
+Path: nntp.perl.org
  3
+Xref: nntp.perl.org perl.cpan.testers:1805500
  4
+Return-Path: <Klaus@Ethgen.de>
  5
+Mailing-List: contact cpan-testers-help@perl.org; run by ezmlm
  6
+Delivered-To: mailing list cpan-testers@perl.org
  7
+Delivered-To: moderator for cpan-testers@perl.org
  8
+Received: (qmail 18701 invoked from network); 27 Jun 2008 10:00:45 -0000
  9
+Received: from x1a.develooper.com (HELO x1.develooper.com) (216.52.237.111)
  10
+  by x6.develooper.com with SMTP; 27 Jun 2008 10:00:45 -0000
  11
+Received: (qmail 4992 invoked by uid 225); 27 Jun 2008 10:00:45 -0000
  12
+Delivered-To: cpan-testers@perl.org
  13
+Received: (qmail 4980 invoked by alias); 27 Jun 2008 10:00:44 -0000
  14
+X-Spam-Status: No, hits=-2.6 required=8.0
  15
+	tests=BAYES_00
  16
+X-Spam-Check-By: la.mx.develooper.com
  17
+Received: from toomai.ethgen.de (HELO toomai.ethgen.de) (85.10.201.50)
  18
+    by la.mx.develooper.com (qpsmtpd/0.28) with ESMTP; Fri, 27 Jun 2008 03:00:40 -0700
  19
+Received: from static-195-068.catv.glattnet.ch ([80.242.195.68] helo=ikki.ket)
  20
+	by toomai.ethgen.de with esmtpsa (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
  21
+	(Exim 4.63)
  22
+	(envelope-from <klaus@ethgen.de>)
  23
+	id 1KCAkr-0002vL-7O; Fri, 27 Jun 2008 12:00:33 +0200
  24
+Received: from klaus by ikki.ket with local (Exim 4.63)
  25
+	(envelope-from <klaus@ikki.ethgen.de>)
  26
+	id 1KCAkq-0000Cx-F7; Fri, 27 Jun 2008 12:00:32 +0200
  27
+Date: Fri, 27 Jun 2008 11:00:32 +0100
  28
+To: srezic@cpan.org
  29
+Cc: cpan-testers@perl.org, KETHGEN@cpan.org
  30
+Subject: Re: FAIL Image-MetaData-GQview-1.9 i386-freebsd 6.1-release
  31
+Message-ID: <20080627100032.GA30668@ikki.ethgen.de>
  32
+References: <1214518288.7Ad78b0.49630@biokovo.herceg.de>
  33
+MIME-Version: 1.0
  34
+Content-Type: text/plain; charset=iso-8859-1; x-action=pgp-signed
  35
+Content-Disposition: inline
  36
+In-Reply-To: <1214518288.7Ad78b0.49630@biokovo.herceg.de>
  37
+User-Agent: Mutt/1.5.18 (2008-05-17)
  38
+From: Klaus@Ethgen.de (Klaus Ethgen)
  39
+
  40
+-----BEGIN PGP SIGNED MESSAGE-----
  41
+Hash: SHA1
  42
+
  43
+Hi,
  44
+
  45
+thanks for your report.
  46
+
  47
+Am Do den 26. Jun 2008 um 23:11 schrieb srezic@cpan.org:
  48
+> #   Failed test 'save("test.jpg", ".metadata/test.jpg.meta")'
  49
+> #   at t/Image-MetaData-GQview.t line 27.
  50
+> 
  51
+> #   Failed test 'Save (Unknown open() mode '>:utf8' at (eval 3) line 10.
  52
+
  53
+I did not realize that such archaic perl versions are still in the wild.
  54
+
  55
+I updated the package to version 1.10. This should fix the error.
  56
+However, I can not test as I do not have such a old system around.
  57
+
  58
+Please test the new version when they is synced to cpan.
  59
+
  60
+Regards
  61
+   Klaus Ethgen
  62
+- -- 
  63
+Klaus Ethgen                            http://www.ethgen.de/
  64
+pub  2048R/D1A4EDE5 2000-02-26 Klaus Ethgen <Klaus@Ethgen.de>
  65
+Fingerprint: D7 67 71 C4 99 A6 D4 FE  EA 40 30 57 3C 88 26 2B
  66
+-----BEGIN PGP SIGNATURE-----
  67
+Version: GnuPG v1.4.6 (GNU/Linux)
  68
+
  69
+iQEVAwUBSGS6QJ+OKpjRpO3lAQJ+BggAsXkzI7G/4lJ8LKmcLYF6g7sQlkyjQ3+U
  70
+NUTBmk0cmSqaCVzEU4+uupsV9CfRWBF2Fv4Dn+hUChWOoass6HoLmaTRXJjgZlnb
  71
+L+zbQmDPFUPdCb/U4JRay6ojg6Fm2oHM+oms2APB0ZU6moe/QmV0meQ2oLFnNU3t
  72
+GKEFbqrlViJz8SKUB3ZPgtSyTLUyzyi7GL1lRkTGtRgeC50VCWtOdObrvHNJlz3u
  73
+K0L+Gucb2MNVXNhQNFnfrjhz8m0XuQW8p81AGFBdPs/8THVjWkZi8ycLyOxjg2SD
  74
+5zyeamBhdQA1PzkVHYpgyHNW2gB2d0NP2hu8Cg59pTzL/Vyyu6KfUg==
  75
+=a/KS
  76
+-----END PGP SIGNATURE-----
  77
+

0 notes on commit f7cb46f

Please sign in to comment.
Something went wrong with that request. Please try again.