Remove empty space :)
[gitmo/moose-dev-utils.git] / cpan-stable-smolder
CommitLineData
aa815f88 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5use CPAN;
6use Cwd;
7use File::chdir;
8use File::Path qw( rmtree );
9
10
11CPAN::HandleConfig->load();
12CPAN::Shell::setup_output();
13CPAN::Index->reload();
14
15local $CPAN::Config->{tar_verbosity} = 'none';
16local $CPAN::Config->{load_module_verbosity} = 'none';
17
18
19my $LOGFILE = ( cwd . "/cpan-stable-smolder.log" );
20
21if ( -f $LOGFILE ) {
22 unlink $LOGFILE;
23}
24
25open my $log, '>', $LOGFILE || die "Could not open $LOGFILE because $!";
26
27test_all_modules(
28 qw[
29 Moose::Autobox
30 MooseX::Accessors::ReadWritePrivate
31 MooseX::App::Cmd
32 MooseX::Async
33 MooseX::Attribute::ENV
34 MooseX::AttributeHelpers
35 MooseX::Attribute::Prototype
36 MooseX::Attributes::Curried
37 MooseX::Blessed::Reconstruct
38 MooseX::ClassAttribute
39 MooseX::Clone
40 MooseX::ConfigFromFile
41 MooseX::Constructor::AllErrors
42 MooseX::Contract
43 MooseX::Control
44 MooseX::CurriedHandles
45 MooseX::Daemonize
46 MooseX::Declare
47 MooseX::DeepAccessors
48 MooseX::DOM
49 MooseX::Emulate::Class::Accessor::Fast
50 MooseX::FollowPBP
51 MooseX::Getopt
52 MooseX::GlobRef::Object
53 MooseX::InsideOut
54 MooseX::Iterator
55 MooseX::KeyedMutex
56 MooseX::LazyLogDispatch
57 MooseX::LogDispatch
58 MooseX::Log::Log4perl
59 MooseX::MakeImmutable
60 MooseX::Meta::TypeConstraint::ForceCoercion
61 MooseX::MetaDescription
62 MooseX::MethodAttributes
63 MooseX::Method::Signatures
64 MooseX::MultiInitArg
65 MooseX::MultiMethods
66 MooseX::MutatorAttributes
67 MooseX::NaturalKey
68 MooseX::NonMoose
69 MooseX::Object::Pluggable
70 MooseX::Param
71 MooseX::Params::Validate
72 MooseX::Plaggerize
73 MooseX::POE
74 MooseX::Policy::SemiAffordanceAccessor
75 MooseX::Q4MLog
76 MooseX::Role::Cmd
77 MooseX::Role::Matcher
78 MooseX::Role::Parameterized
79 MooseX::Role::TraitConstructor
80 MooseX::Role::XMLRPC::Client
81 MooseX::Scaffold
82 MooseX::SemiAffordanceAccessor
83 MooseX::SimpleConfig
84 MooseX::Singleton
85 MooseX::Storage
86 MooseX::Storage::Format::XML::Simple
87 MooseX::StrictConstructor
88 MooseX::Struct
89 MooseX::Templated
90 MooseX::Timestamp
91 MooseX::Traits
92 MooseX::Traits::Attribute::CascadeClear
93 MooseX::Types
94 MooseX::Types::Authen::Passphrase
95 MooseX::Types::Common
96 MooseX::Types::Data::GUID
97 MooseX::Types::DateTime
98 MooseX::Types::IO
99 MooseX::Types::Path::Class
100 MooseX::Types::Set::Object
101 MooseX::Types::Structured
102 MooseX::Types::URI
103 MooseX::Types::UUID
104 MooseX::Types::VariantTable
105 MooseX::WithCache
106 MooseX::Workers
107 MooseX::YAML
81b7b406 108 Fey::ORM
109 KiokuDB
855340bc 110 Catalyst
aa815f88 111 ]
112);
113
114close $log;
115
116exit;
117
81b7b406 118sub test_all_modules {
2873d006 119 foreach my $project (@_) {
81b7b406 120 my $dist = get_distro_from_cpan($project);
121
122 unless ($dist) {
123 print $log "UNKNOWN : $project (not on CPAN?)\n";
124 next;
125 }
126
127 my $passed = test_module( $dist->dir() );
128
129 my $msg = $passed ? 'SUCCESS' : 'FAIL';
130
131 print $log sprintf( '%7s : %s - %s', $msg, $project, $dist->base_id() );
132 print $log "\n";
133 }
134}
135
aa815f88 136sub get_distro_from_cpan {
137 my $project = shift;
138
139 ( my $module = $project ) =~ s/-/::/g;
140
141 my @mods = CPAN::Shell->expand( 'Module', $module );
142
143 die "Cannot resolve $project to a single module object"
144 if @mods > 1;
145
146 return unless @mods;
147
148 my $dist = $mods[0]->distribution();
149
150 $dist->get();
151
152 return $dist;
153}
154
155sub test_module {
156 my $dir = shift;
157
158 local $CWD = $dir;
159
160 local $ENV{PERL_AUTOINSTALL} = '--defaultdeps';
81b7b406 161 if ( -f "Build.PL" ) {
162 _run_commands(
163 [ $^X, 'Build.PL' ],
164 ['./Build'],
165 [qw( ./Build test )],
166 );
aa815f88 167 }
168 else {
81b7b406 169 _run_commands(
170 [ $^X, 'Makefile.PL' ],
171 ['make'],
172 [qw( make test )],
173 );
aa815f88 174 }
175}
176
81b7b406 177sub _run_commands {
178 for my $cmd (@_) {
179 if ( system( @{$cmd} ) ) {
180 warn "Failed to run @{$cmd}\n";
181 return;
aa815f88 182 }
aa815f88 183 }
181b2270 184
185 return 1;
aa815f88 186}
187
1881;