Add KiokuDB to smoke list.
[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
aa815f88 110 ]
111);
112
113close $log;
114
115exit;
116
81b7b406 117sub test_all_modules {
118 foreach my $project (grep {$_ eq 'Fey::ORM'}@_) {
119 my $dist = get_distro_from_cpan($project);
120
121 unless ($dist) {
122 print $log "UNKNOWN : $project (not on CPAN?)\n";
123 next;
124 }
125
126 my $passed = test_module( $dist->dir() );
127
128 my $msg = $passed ? 'SUCCESS' : 'FAIL';
129
130 print $log sprintf( '%7s : %s - %s', $msg, $project, $dist->base_id() );
131 print $log "\n";
132 }
133}
134
aa815f88 135sub get_distro_from_cpan {
136 my $project = shift;
137
138 ( my $module = $project ) =~ s/-/::/g;
139
140 my @mods = CPAN::Shell->expand( 'Module', $module );
141
142 die "Cannot resolve $project to a single module object"
143 if @mods > 1;
144
145 return unless @mods;
146
147 my $dist = $mods[0]->distribution();
148
149 $dist->get();
150
151 return $dist;
152}
153
154sub test_module {
155 my $dir = shift;
156
157 local $CWD = $dir;
158
159 local $ENV{PERL_AUTOINSTALL} = '--defaultdeps';
81b7b406 160 if ( -f "Build.PL" ) {
161 _run_commands(
162 [ $^X, 'Build.PL' ],
163 ['./Build'],
164 [qw( ./Build test )],
165 );
aa815f88 166 }
167 else {
81b7b406 168 _run_commands(
169 [ $^X, 'Makefile.PL' ],
170 ['make'],
171 [qw( make test )],
172 );
aa815f88 173 }
174}
175
81b7b406 176sub _run_commands {
177 for my $cmd (@_) {
178 if ( system( @{$cmd} ) ) {
179 warn "Failed to run @{$cmd}\n";
180 return;
aa815f88 181 }
aa815f88 182 }
183}
184
1851;