#!/usr/bin/perl use strict; use warnings; use Cwd; use File::chdir; my $LOGFILE = (cwd . "/smolder.log"); if (-f $LOGFILE) { unlink $LOGFILE; } open LOG, ">", $LOGFILE || die "Could not open $LOGFILE because $!"; test_all_modules( qw[ Class-MOP Moose 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 ] ); close LOG; exit; sub test_module { if (-f "Makefile.PL") { return system 'perl Makefile.PL && make && make test'; } else { return system 'perl Build.PL && ./Build && ./Build test' } } sub cleanup_module { if (-f "Makefile.PL") { system 'make clean'; } else { system './Build clean'; } my @files = map { s/^\?\s+//; chomp; $_ } grep { /^\?/ } `svn status`; foreach my $file (@files) { if (-d $file) { system "rm -rf $file"; } else { unlink $file; } } } sub test_all_modules { foreach my $project (@_) { return unless -d $project; local $CWD = $project; local $CWD = 'trunk' if -d 'trunk'; if (test_module == 0) { print LOG "SUCCESS : ${project}\n"; } else { print LOG "FAIL : ${project}\n"; } cleanup_module; } } 1;