View Revision Log| RSS Feed | Checkout

Revision 5961 (by autarch, 2008/09/15 16:59:53) Add Fey-ORM to cpan smolder list
#!/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;