View Revision Log|
RSS Feed | Checkout
| Revision 5961 (by autarch, 2008/09/15 16:59:53) |
|---|
#!/usr/bin/perl
use strict;
use warnings;
use CPAN;
use Cwd;
use File::chdir;
use File::Path qw( rmtree );
CPAN::HandleConfig->load();
CPAN::Shell::setup_output();
CPAN::Index->reload();
local $CPAN::Config->{tar_verbosity} = 'none';
local $CPAN::Config->{load_module_verbosity} = 'none';
my $LOGFILE = ( cwd . "/cpan-stable-smolder.log" );
if ( -f $LOGFILE ) {
unlink $LOGFILE;
}
open my $log, '>', $LOGFILE || die "Could not open $LOGFILE because $!";
test_all_modules(
qw[
Moose-Autobox
Moose-Policy
Moose-Test
Moose-Tiny
MooseX-App-Cmd
MooseX-ArrayInstance
MooseX-Async
MooseX-Attribute-Cached
MooseX-Attribute-ENV
MooseX-AttributeHelpers
MooseX-Attribute-Restricted
MooseX-AutoDoc
MooseX-Cache
MooseX-ClassAttribute
MooseX-Clone
MooseX-ConfigFromFile
MooseX-Coro
MooseX-Daemonize
MooseX-Emulate-Class-Accessor-Fast
MooseX-Getopt
MooseX-Getopt-DBI
MooseX-GlobRef-Object
MooseX-InsideOut
MooseX-Iterator
MooseX-JobControl
MooseX-LazyLogDispatch
MooseX-Literals
MooseX-LogDispatch
MooseX-MetaDescription
MooseX-Method
MooseX-Method-Signature
MooseX-MultiInitArg
MooseX-Object-Pluggable
MooseX-Params-Validate
MooseX-Patterns-GOF
MooseX-POE
MooseX-Role-TraitConstructor
MooseX-SemiAffordanceAccessor
MooseX-Service
MooseX-SimpleConfig
MooseX-Singleton
MooseX-StdDaemon
MooseX-Storage
MooseX-Storage-Directory
MooseX-StrictConstructor
MooseX-TypeLibrary
MooseX-Types-BigInt
MooseX-Types-Data-GUID
MooseX-Types-DateTime
MooseX-Types-Path-Class
MooseX-Types-Structured
MooseX-Types-URI
MooseX-Types-VariantTable
MooseX-Workers
Fey-ORM
]
);
close $log;
exit;
sub get_distro_from_cpan {
my $project = shift;
( my $module = $project ) =~ s/-/::/g;
my @mods = CPAN::Shell->expand( 'Module', $module );
die "Cannot resolve $project to a single module object"
if @mods > 1;
return unless @mods;
my $dist = $mods[0]->distribution();
$dist->get();
return $dist;
}
sub test_module {
my $dir = shift;
local $CWD = $dir;
local $ENV{PERL_AUTOINSTALL} = '--defaultdeps';
if ( -f "Makefile.PL" ) {
return ! system 'perl Makefile.PL && make && make test';
}
else {
return ! system 'perl Build.PL && ./Build && ./Build test';
}
}
sub test_all_modules {
foreach my $project (@_) {
my $dist = get_distro_from_cpan($project);
unless ($dist) {
print $log "UNKNOWN : $project (not on CPAN?)\n";
next;
}
my $passed = test_module( $dist->dir() );
my $msg = $passed ? 'SUCCESS' : 'FAIL';
print $log sprintf( '%7s : %s - %s', $msg, $project, $dist->base_id() );
print $log "\n";
}
}
1;