File Coverage

blib/lib/CPAN/YACSmoke/Plugin/Phalanx100.pm
Criterion Covered Total %
statement 13 15 86.6
branch n/a
condition n/a
subroutine 5 5 100.0
pod n/a
total 18 20 90.0


line stmt bran cond sub pod time code
1             =head1 NAME
2              
3             CPAN::YACSmoke::Plugin::Phalanx100 - Test Phalanx 100 list in CPAN::YACSmoke
4              
5             =head1 SYNOPSIS
6              
7             use CPAN::YACSmoke;
8             my $config = {
9             list_from => 'Phalanx100',
10             };
11             my $foo = CPAN::YACSmoke->new(config => $config);
12             my @list = $foo->download_list();
13              
14             =head1 DESCRIPTION
15              
16             This module provides the backend ability to test modules from the
17             Phalanx 100 list.
18              
19             This module should be used together with L<CPAN::YACSmoke>.
20              
21             =cut
22              
23             package CPAN::YACSmoke::Plugin::Phalanx100;
24              
25 2     2   6215 use 5.006001;
  2         6  
  2         66  
26 2     2   11 use strict;
  2         3  
  2         64  
27 2     2   20 use warnings;
  2         4  
  2         97  
28              
29             our $VERSION = '0.02';
30              
31 2     2   1835 use CPANPLUS::Backend;
  2         946612  
  2         76  
32              
33 2     2   947 use CPAN::YACSmoke 0.03;
  0            
  0            
34             use Module::Phalanx100 0.03;
35              
36             # use YAML 'Dump';
37              
38             =head1 CONSTRUCTOR
39              
40             =over 4
41              
42             =item new()
43              
44             Creates the plugin object.
45              
46             =back
47              
48             =cut
49            
50             sub new {
51             my $class = shift || __PACKAGE__;
52             my $hash = shift;
53              
54             my $self = {
55             };
56             foreach my $field (qw( smoke force )) {
57             $self->{$field} = $hash->{$field} if(exists $hash->{$field});
58             }
59              
60             bless $self, $class;
61             }
62              
63             =head1 METHODS
64              
65             =over 4
66              
67             =item download_list()
68              
69             Return the list of distributions recorded in the latest RECENT file.
70              
71             =cut
72              
73             sub download_list {
74             my $self = shift;
75              
76             my @list = Module::Phalanx100->modules();
77              
78             my $cpan = $self->{smoke}->{cpan};
79              
80             my %testlist = ( );
81             foreach my $modname (@list) {
82             my $mod = $cpan->parse_module( module => $modname );
83             if ($mod) {
84             my $pkgname = $mod->path .'/'. $mod->package;
85             $pkgname =~ s/^authors\/id//i;
86             # print STDERR Dump($mod), "\n";
87             $testlist{$pkgname}++,
88             unless ($mod->package_is_perl_core);
89             } else {
90             # TODO: warning message
91             }
92             }
93              
94             return (sort keys %testlist);
95             }
96              
97              
98             1;
99             __END__
100              
101             =pod
102              
103             =back
104              
105             =head1 CAVEATS
106              
107             This is a proto-type release. Use with caution and supervision.
108              
109             =head1 AUTHOR
110              
111             Robert Rothenberg <rrwo at cpan.org>
112              
113             =head2 Suggestions and Bug Reporting
114              
115             Please submit suggestions and report bugs to the CPAN Bug Tracker at
116             L<http://rt.cpan.org>.
117              
118             =head1 COPYRIGHT AND LICENSE
119              
120             Copyright (C) 2005 by Robert Rothenberg. All Rights Reserved.
121              
122             This library is free software; you can redistribute it and/or modify
123             it under the same terms as Perl itself, either Perl version 5.8.3 or,
124             at your option, any later version of Perl 5 you may have available.
125              
126             =head1 SEE ALSO
127              
128             Module::Phalanx100
129              
130             =cut