use Test::More;
BEGIN {
- plan skip_all => 'This test will not run unless you set MOOSE_TEST_MD to a true value'
+ my $help = <<'EOF';
+
+
+ This test will not run unless you set MOOSE_TEST_MD to a true value.
+ Valid values are:
+
+ all Test every distro which depends on Moose except those that we know
+ cannot be tested. This is a lot of distros (thousands).
+
+ MooseX Test all Moose extension distros
+ (MooseX modules plus a few others).
+
+ $true Any other true value runs the default tests. We pick 200 random
+ distros and test them.
+
+EOF
+
+ plan skip_all => $help
unless $ENV{MOOSE_TEST_MD};
}
use Test::Requires {
- 'Archive::Zip' => 0, # or else .zip dists won't be able to be installed
- 'Test::DependentModules' => '0.09', # skip all if not installed
- 'MetaCPAN::API' => '0.33',
+ 'Archive::Zip' => 0, # or else .zip dists won't be able to be installed
+ 'Test::DependentModules' => '0.13',
+ 'MetaCPAN::API' => '0.33',
};
+
use Test::DependentModules qw( test_module );
use DateTime;
diag( 'Test run performed at: '
. DateTime->now
. ' with Moose '
- . Moose->VERSION );
+ . (Moose->VERSION || 'git repo') );
$ENV{PERL_TEST_DM_LOG_DIR} = abs_path('.');
delete @ENV{ qw( AUTHOR_TESTING RELEASE_TESTING SMOKE_TESTING ) };
}
);
-my %todo_reasons = map {
- chomp;
- /^(\S*)\s*(?:#\s*(.*)\s*)?$/;
- defined($1) && length($1) ? ($1 => $2) : ()
-} <DATA>;
-my %todo = map { $_ => 1 } keys %todo_reasons;
-
my @skip_prefix = qw(Acme Task Bundle);
-my %skip = map { $_ => 1 } (
- 'App-CPAN2Pkg', # tk tests are graphical
- 'App-USBKeyCopyCon', # gtk tests are graphical
- 'Bot-Backbone', # poe-loop-ev prompts
- 'CatalystX-Restarter-GTK', # gtk tests are graphical
- 'CM-Permutation', # OpenGL uses graphics in Makefile.PL
- 'Dackup', # depends on running ssh
- 'Data-Collector', # depends on running ssh
- 'Date-Biorhythm', # Date::Business prompts in Makefile.PL
- 'Forest-Tree-Viewer-Gtk2', # gtk tests are graphical
- 'Games-Pandemic', # tk tests are graphical
- 'Games-RailRoad', # tk tests are graphical
- 'Games-Risk', # tk tests are graphical
- 'Gearman-Driver', # spews tar errors
- 'helm', # depends on running ssh
- 'iTransact-Lite', # tests rely on internet site
- 'Log-Dispatch-Gtk2-Notify', # gtk tests are graphical
- 'LPDS', # gtk tests are graphical
- 'Net-SFTP-Foreign-Exceptional', # depends on running ssh
- 'Periscope', # gtk tests are graphical
- 'POE-Component-OpenSSH', # depends on running ssh
- 'POE-Component-Server-SimpleHTTP-PreFork', # ipc::shareable tests hang
- 'RDF-TrineX-RuleEngine-Jena', # prompts in Makefile.PL
- 'Test-SFTP', # Term::ReadPassword prompts in tests
- 'Tk-Role-Dialog', # tk tests are graphical
- 'Weaving-Tablet', # tk tests are graphical
- 'WWW-eNom', # tests rely on internet site
- 'WWW-Finances-Bovespa', # tests rely on internet site
- 'WWW-Hashdb', # test hangs, pegging cpu
- 'WWW-Vimeo-Download', # tests rely on internet site
- 'Zucchini', # File::Rsync prompts in Makefile.PL
-);
+my %skip;
+my %todo;
+
+my $hash;
+for my $line (<DATA>) {
+ chomp $line;
+ next unless $line =~ /\S/;
+ if ( $line =~ /^# (\w+)/ ) {
+ die "Invalid action in DATA section ($1)"
+ unless $1 eq 'SKIP' || $1 eq 'TODO';
+ $hash = $1 eq 'SKIP' ? \%skip : \%todo;
+ }
+
+ my ( $dist, $reason ) = $line =~ /^(\S*)\s*(?:#\s*(.*)\s*)?$/;
+ next unless defined $dist && length $dist;
+
+ $hash->{$dist} = $reason;
+}
my %name_fix = (
'App-passmanager' => 'App::PassManager',
'X11-XCB' => 'X11::XCB::Connection',
'XML-Ant-BuildFile' => 'XML::Ant::BuildFile::Project',
);
+
my @dists = sort
grep { !$skip{$_} }
grep { my $dist = $_; !any { $dist =~ /^$_-/ } @skip_prefix }
map { $_->{fields}{distribution} }
@{ $res->{hits}{hits} };
+if ( $ENV{MOOSE_TEST_MD} eq 'MooseX' ) {
+ @dists = grep { /^(?:MooseX-|Fey-ORM)/ } @dists;
+}
+elsif ( $ENV{MOOSE_TEST_MD} ne 'all' ) {
+ diag(
+ <<'EOF'
+ Picking 200 random dependents to test. Set MOOSE_TEST_MD=all to test all
+ dependents or MOOSE_TEST_MD=MooseX to test extension modules only.
+EOF
+ );
+
+ my %indexes;
+ while ( keys %indexes < 200 ) {
+ $indexes{ int rand( scalar @dists ) } = 1;
+ }
+
+ @dists = @dists[ sort keys %indexes ];
+}
+
plan tests => scalar @dists;
for my $dist (@dists) {
note($dist);
my $module = $dist;
$module = $name_fix{$module} if exists $name_fix{$module};
if ($todo{$dist}) {
- my $reason = $todo_reasons{$dist};
+ my $reason = $todo{$dist};
$reason = '???' unless defined $reason;
local $TODO = $reason;
eval { test_module($module); 1 }
}
__DATA__
-# indexing issues (test::dm bugs?)
+# SKIP: indexing issues (test::dm bugs?)
Alice # couldn't find on cpan
Hopkins # couldn't find on cpan
PostScript-Barcode # couldn't find on cpan
+WWW-Mechanize-Query # couldn't find on cpan
-# doesn't install deps properly (test::dm bugs?)
+# SKIP: doesn't install deps properly (test::dm bugs?)
App-Benchmark-Accessors # Mojo::Base isn't installed
Bot-BasicBot-Pluggable # Crypt::SaltedHash isn't installed
Code-Statistics # MooseX::HasDefaults::RO isn't installed
Net-Bamboo # XML::Tidy isn't installed
Tatsumaki-Template-Markapl # Tatsumaki::Template isn't installed
Text-Tradition # Bio::Phylo::IO isn't installed
+WebService-Strava # Any::URI::Escape isn't installed
-# no tests
+# SKIP: no tests
AI-ExpertSystem-Advanced # no tests
API-Assembla # no tests
App-mkfeyorm # no tests
LWP-UserAgent-OfflineCache # no tests
Markdown-Pod # no tests
MooseX-Types-DateTimeX # no tests
+MooseX-Types-DateTime-MoreCoercions # no tests unless DateTime::Format::DateManip is installed
Net-Azure-BlobService # no tests
Net-Dropbox # no tests
Net-Flowdock # no tests
WWW-MenuGrinder # no tests
WWW-WuFoo # no tests
-# external dependencies
+# SKIP: external dependencies
+AnyEvent-MSN # requires Net::SSLeay (which requires libssl)
+AnyEvent-Multilog # requires multilog
+AnyEvent-Net-Curl-Queued # requires libcurl
AnyEvent-ZeroMQ # requires zeromq installation
AnyMQ-ZeroMQ # requires zeromq installation
Apache2-HttpEquiv # requires apache (for mod_perl)
App-Mimosa # requires fastacmd
App-PgCryobit # requires postgres installation
+App-SimplenoteSync # requires File::ExtAttr which requires libattr
Archive-RPM # requires cpio
+Bot-Jabbot # requires libidn
Catalyst-Engine-Stomp # depends on alien::activemq
Catalyst-Plugin-Session-Store-Memcached # requires memcached
Cave-Wrapper # requires cave to be installed
CHI-Driver-Redis # requires redis server
Crypt-Random-Source-Strong-Win32 # windows only
+Curses-Toolkit # requires Curses which requires ncurses library
Dackup # requires ssh
Data-Collector # requires ssh
DBIx-PgLink # requires postgres installation
Dist-Zilla-Plugin-SvnObtain # requires svn bindings
Fedora-App-MaintainerTools # requires rpm to be installed
Fedora-App-ReviewTool # requires koji to be installed
+Fuse-Template # requires libfuse
Games-HotPotato # requires sdl
Games-Tetris-Complete # requires threads
helm # requires ssh
HTML-Barcode-QRCode # requires libqrencode
+IRC-RemoteControl # requires libssh2
JavaScript-Sprockets # requires sprocketize
JavaScript-V8x-TestMoreish # requires v8
Koha-Contrib-Tamil # requires yaz
MongoDBI # requires mongo
MongoDB # requires mongo
MSWord-ToHTML # requires abiword to be installed
+Net-DBus-Skype # requires dbus
Net-Route # requires route
+Net-SFTP-Foreign-Exceptional # depends on running ssh
+Net-UpYun # requires curl
+Net-ZooTool # requires curl
Nginx-Control # requires nginx to be installed
NLP-Service # requires javac
+Padre-Plugin-Cookbook # requires Wx
Padre-Plugin-Moose # requires threaded perl
Padre-Plugin-PDL # requires threaded perl
Padre-Plugin-Snippet # requires threaded perl
SimpleDB-Class # requires memcached
SVN-Simple-Hook # requires svn
SVN-Tree # requires svn
+Tapper-MCP # depends on everything under the sun - some of which is broken
Template-JavaScript # requires v8
+TheSchwartz-Moosified # requires DBI::Pg ?
+WebService-SendGrid # requires curl
+WebService-Tesco-API # requires curl
+WWW-Contact # depends on curl
+WWW-Curl-Simple # requires curl
ZeroMQ-PubSub # requires zmq
ZMQ-Declare # requires zmq
-# flaky internet tests
+# SKIP: flaky internet tests
iTransact-Lite # tests rely on internet site
+Unicode-Emoji-E4U # tests rely on internet site
+WWW-eNom # tests rely on internet site
WWW-Finances-Bovespa # tests rely on internet site
WWW-Vimeo-Download # tests rely on internet site
-WWW-eNom # tests rely on internet site
+WWW-YouTube-Download-Channel # tests rely on internet site
-# graphical
+# SKIP: graphical
App-CPAN2Pkg # tk tests are graphical
App-USBKeyCopyCon # gtk tests are graphical
CatalystX-Restarter-GTK # gtk tests are graphical
Tk-Role-Dialog # tk tests are graphical
Weaving-Tablet # tk tests are graphical
-# failing for a reason
+# SKIP: prompts (or a dep prompts) or does something else dumb
+Bot-Backbone # poe-loop-ev prompts
+Cache-Ehcache # hangs if server exists on port 8080
+CM-Permutation # OpenGL uses graphics in Makefile.PL
+Date-Biorhythm # Date::Business prompts in Makefile.PL
+DBIx-VersionedDDL # runs a script with /usr/bin/perl in the shbang line
+File-Tail-Scribe # tests hang
+Gearman-Driver # spews tar errors
+Net-SSH-Mechanize # the mock-ssh script it runs seems to spin endlessly
+WWW-Hashdb # test hangs, pegging cpu
+Zucchini # File::Rsync prompts in Makefile.PL
+
+# TODO: failing for a reason
Algorithm-KernelKMeans # mx-types-common changes broke it
AnyEvent-BitTorrent # broken
AnyEvent-Cron # intermittent failures
App-Validation-Automation # dep on Switch
App-Wubot # broken
Beagle # depends on term::readline::perl
-Bot-Backbone # poe-loop-ev prompts
Cache-Profile # broken
Catalyst-Authentication-Store-LDAP-AD-Class # pod coverage fail
Catalyst-Controller-Resources # broken
CatalystX-Usul # proc::processtable doesn't load
Cheater # parse::randgen is broken
Class-OWL # uses CMOP::Class without loading cmop
-CM-Permutation # OpenGL uses graphics in Makefile.PL
Cogwheel # uses ancient moose apis
Config-Model # broken
Config-Model-Backend-Augeas # deps on Config::Model
Data-PackageName # broken
Data-Pipeline # uses ancient moose apis
Data-SCORM # pod coverage fail
-Date-Biorhythm # Date::Business prompts in Makefile.PL
DayDayUp # MojoX-Fixup-XHTML doesn't exist
DBICx-Modeler-Generator # broken (weirdly)
DBIx-SchemaChecksum # broken
Devel-Events # broken (role conflict)
Dist-Zilla-Deb # pod coverage fail
Dist-Zilla-Plugin-ChangelogFromGit-Debian # git::repository is broken
+Dist-Zilla-Plugin-CheckChangesHasContent # broken
Dist-Zilla-Plugin-ProgCriticTests # broken
+Dist-Zilla-Plugin-Test-ReportPrereqs # broken
DustyDB # uses old moose apis
Dwimmer # broken
Facebook-Graph # broken
Form-Factory # uses old moose apis
FormValidator-Nested # broken
Frost # broken
-Gitalist # deps on mxms
+Games-Dice-Loaded # flaky tests
+Gitalist # broken
GOBO # coerce with no coercion
Google-Chart # recreating type constraints
Google-Spreadsheet-Agent # pod::coverage fail
marc-moose # broken (only sometimes?)
Mail-Summary-Tools # DT::Format::DateManip is broken
MediaWiki-USERINFO # broken
+Metabase-Backend-MongoDB # broken
Method-Signatures # doesn't like ANY_MOOSE=Moose
mobirc # http::engine broken
MooseX-Attribute-Prototype # uses old moose apis
MooseX-Getopt-Usage # missing dep on Test::Class
MooseX-Meta-Attribute-Index # old moose apis
MooseX-Meta-Attribute-Lvalue # old moose apis
-MooseX-Method-Signatures # broken
+MooseX-Role-XMLRPC-Client # requires LWP::Protocol::http which requires libssl
+MooseX-Scaffold # broken
MooseX-Struct # ancient moose apis
MooseX-Types-Parameterizable # broken
+MooseX-WithCache # broken
MouseX-Types # broken (with moose)
MySQL-Util # pod-coverage fail
Nagios-Passive # broken
NetHack-Item # NH::Monster::Spoiler is broken
NetHack-Monster-Spoiler # broken (MX::CA issues)
Net-HTTP-Factual # broken
+Net-Jabber-Bot # broken
Net-Journyx # broken
Net-Mollom # broken
Net-Parliament # broken
Net-Plurk # broken
+Net-SSLeay-OO # broken
Net-StackExchange # broken
+Norma # fails when trying to write to a read-only SQLite db file under jenkins, also fails when run manually
ODG-Record # Test::Benchmark broken
Perlbal-Control # proc::processtable doesn't load
Pg-BulkCopy # hardcodes /usr/bin/perl
POE-Component-ResourcePool # broken
POE-Component-Server-PSGI # broken deps
POE-Component-Server-SimpleHTTP-PreFork # broken deps
+Poet # missing dep on Log::Any::Adapter::Log4perl
POEx-ProxySession # broken deps
POEx-PubSub # broken deps
POEx-WorkerPool # broken deps
Silki # image::magick is broken
SilkiX-Converter-Kwiki # file::mimeinfo expects (?-xism:
Sloth # rest::utils is broken
+Sque # couldn't fork server for testing
SRS-EPP-Proxy # depends on xml::epp
String-Blender # broken
TAEB # broken
Weather-TW # missing dep on Mojo::DOM
Web-API-Mapper # broken
WebNano-Controller-CRUD # broken
+Webservice-Intermine # broken tests
WebService-Yes24 # broken
WiX3 # broken
WWW-Alltop # XML::SimpleObject configure fail
-WWW-DataWiki # depends on mxms
+WWW-DataWiki # broken
WWW-Fandango # bad dist
WWW-FMyLife # broken
-WWW-Hashdb # test hangs, pegging cpu
WWW-Mechanize-Cached # tries to read from wrong build dir?
WWW-Metalgate # Cache is broken
WWW-Scramble # pod::coverage fail
XIRCD # undeclared deps
XML-EPP # coerce without coercion
XML-SRS # deps on prang
+XML-Writer-Compiler # broken tests
Yukki # git::repository is broken
-Zucchini # File::Rsync prompts in Makefile.PL