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
- '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
- '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-Hashdb', # test hangs, pegging cpu
- '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',
'mobirc' => 'App::Mobirc',
'OWL-Simple' => 'OWL::Simple::Class',
'Patterns-ChainOfResponsibility' => 'Patterns::ChainOfResponsibility::Application',
+ 'Pod-Elemental-Transfomer-VimHTML' => 'Pod::Elemental::Transformer::VimHTML',
'Role-Identifiable' => 'Role::Identifiable::HasIdent',
'smokebrew' => 'App::SmokeBrew',
'Treex-Parser-MSTperl' => 'Treex::Tool::Parser::MSTperl',
'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
-Pod-Elemental-Transformer-VimHTML # couldn't find on cpan
PostScript-Barcode # couldn't find on cpan
+WWW-Mechanize-Query # couldn't find on cpan
-# weird errors (test::dm bugs)
-Alice # can't resolve distribution
-Config-Model-Backend-Augeas # deps on Config::Model
-Config-Model # can't run tests
-Config-Model-OpenSsh # deps on Config::Model
-CPAN-Patches # can't run tests
-CPAN-Patches-Plugin-Debian # can't run tests
-KiokuDB-Backend-BDB # can't run tests
-Net-Azure-BlobService # ???
-Pod-Weaver-Section-Consumes # ???
-Pod-Weaver-Section-Extends # ???
-TryCatch # can't run tests
-XML-Rabbit # can't run tests
-
-# doesn't install deps properly (test::dm bugs)
-App-Benchmark-Accessors # deps aren't installed correctly (???)
-Bot-BasicBot-Pluggable # deps aren't installed correctly (???)
-Code-Statistics # deps aren't installed correctly (???)
-Dist-Zilla-PluginBundle-Author-MELO # deps aren't installed correctly (???)
-Dist-Zilla-PluginBundle-MITHALDU # deps aren't installed correctly (???)
-Dist-Zilla-Util-FileGenerator # deps aren't installed correctly (???)
-EBI-FGPT-FuzzyRecogniser # deps aren't installed correctly (???)
-Erlang-Parser # deps aren't installed correctly (???)
-Foorum # deps aren't installed correctly (???)
-Graphics-Primitive-Driver-CairoPango # deps aren't installed correctly (???)
-Grimlock # deps aren't installed correctly (???)
-IM-Engine-Plugin-Dispatcher # deps aren't installed correctly (???)
-IMS-CP-Manifest # deps aren't installed correctly (???)
-Locale-Handle-Pluggable # deps aren't installed correctly (???)
-marc-moose # deps aren't installed correctly (???)
-Method-Signatures # deps aren't installed correctly (???)
-mobirc # deps aren't installed correctly (???)
-MooseX-APIRole # deps aren't installed correctly (???)
-MooseX-MultiObject # deps aren't installed correctly (???)
-Net-Bamboo # deps aren't installed correctly (???)
-Net-Stripe # deps aren't installed correctly (???)
-Number-Phone-NANP-Vanity # deps aren't installed correctly (???)
-Perl-Achievements # deps aren't installed correctly (???)
-Tatsumaki-Template-Markapl # deps aren't installed correctly (???)
-Text-TEI-Collate # deps aren't installed correctly (???)
-Text-Tradition # deps aren't installed correctly (???)
-WebService-SOS # deps aren't installed correctly (???)
-WWW-Mechanize-Cached # deps aren't installed correctly (???)
-XML-Ant-BuildFile # deps aren't installed correctly (???)
-
-# no tests
+# 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
+Dist-Zilla-PluginBundle-MITHALDU # List::AllUtils isn't installed
+Dist-Zilla-Util-FileGenerator # MooseX::HasDefaults::RO isn't installed
+EBI-FGPT-FuzzyRecogniser # GO::Parser isn't installed
+Erlang-Parser # Parse::Yapp::Driver isn't installed
+Foorum # Sphinx::Search isn't installed
+Grimlock # DBIx::Class::EncodedColumn isn't installed
+Locale-Handle-Pluggable # MooseX::Types::VariantTable::Declare isn't installed
+mobirc # HTTP::Session::State::GUID 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
+
+# SKIP: no tests
AI-ExpertSystem-Advanced # no tests
API-Assembla # no tests
App-mkfeyorm # no tests
App-passmanager # no tests
+App-Scrobble # no tests
Bot-Applebot # no tests
Catalyst-Authentication-Credential-Facebook-OAuth2 # no tests
Catalyst-Authentication-Store-Fey-ORM # 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
Net-OpenStack-Attack # no tests
Net-Ostrich # no tests
Net-Recurly # no tests
OpenDocument-Template # no tests
+Pod-Weaver-Section-Consumes # no tests
Pod-Weaver-Section-Encoding # no tests
+Pod-Weaver-Section-Extends # no tests
POE-Component-Server-MySQL # no tests
Random-Quantum # no tests
SchemaEvolution # no tests
WWW-MenuGrinder # no tests
WWW-WuFoo # no tests
-# external dependencies
-Alien-ActiveMQ # requires activemq
+# 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
-# graphical
+# 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-YouTube-Download-Channel # tests rely on internet site
+
+# 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
+IPC-AnyEvent-Gearman # tests hang
+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-ArchiveDevelCover # depends on nonexistent testdata::setup
App-Dataninja # bad M::I install in inc/
App-Fotagger # Imager doesn't compile
-App-HistHub # missing dep on JSON.pm
App-Magpie # deps on URPM which doesn't exist
App-MediaWiki2Git # git::repository is broken
App-Munchies # depends on XML::DTD
App-TemplateServer-Provider-HTML-Template # dep on app-templateserver
App-TemplateServer-Provider-Mason # dep on app-templateserver
App-TemplateServer-Provider-TD # dep on app-templateserver
-App-TimeTracker # git::repository is broken
App-Twimap # dep on Web::oEmbed::Common
App-Validation-Automation # dep on Switch
App-Wubot # broken
Beagle # depends on term::readline::perl
-Bio-MAGETAB # datetime-format-datemanip is broken
-Bot-Backbone # poe-loop-ev prompts
Cache-Profile # broken
Catalyst-Authentication-Store-LDAP-AD-Class # pod coverage fail
Catalyst-Controller-Resources # broken
Catalyst-Controller-SOAP # broken
Catalyst-Model-Sedna # deps on Alien-Sedna which doesn't exist
Catalyst-Plugin-Continuation # undeclared dep
-Catalyst-Plugin-ErrorCatcher-ActiveMQ-Stomp # pod coverage fail
Catalyst-Plugin-Session-State-Cookie # broken
Catalyst-Plugin-Session-Store-TestMemcached # dep with corrupt archive
Catalyst-Plugin-SwiffUploaderCookieHack # undeclared dep
Catalyst-TraitFor-Request-PerLanguageDomains # dep on ::State::Cookie
CatalystX-I18N # dep on ::State::Cookie
CatalystX-MooseComponent # broken
-CatalystX-SimpleAPI # depends on mxms
CatalystX-SimpleLogin # 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
+Config-Model-OpenSsh # deps on Config::Model
Constructible # GD::SVG is a broken dist
Constructible-Maxima # GD::SVG is a broken dist
Coro-Amazon-SimpleDB # amazon::simpledb::client doesn't exist
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-Class-Migration # missing dep on Log::Contextual
DBIx-SchemaChecksum # broken
Debian-Apt-PM # configure time failures
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-PerlTidy # expects to find dzil in the path
Dist-Zilla-Plugin-ProgCriticTests # broken
+Dist-Zilla-Plugin-Test-ReportPrereqs # broken
DustyDB # uses old moose apis
Dwimmer # broken
-ELF-Extract-Sections # depends on mxms
-ETLp # depends on mxms
Facebook-Graph # broken
Fedora-Bugzilla # deps on nonexistent things
FFmpeg-Thumbnail # undeclared dep
File-DataClass # XML::DTD is a broken dist
File-Stat-Moose # old moose apis
-Finance-Bank-SentinelBenefits-Csv401kConverter # depends on mxms
+File-Tail-Dir # intermittent fails (i think)
Form-Factory # uses old moose apis
FormValidator-Nested # broken
Frost # broken
-Gitalist # deps on mxms
-Git-CPAN-Patch # system::command is broken
+Games-Dice-Loaded # flaky tests
+Gitalist # broken
GOBO # coerce with no coercion
Google-Chart # recreating type constraints
Google-Spreadsheet-Agent # pod::coverage fail
Kamaitachi # pod::coverage fail
KiokuDB-Backend-Files # broken
LaTeX-TikZ # broken (with moose)
+marc-moose # broken (only sometimes?)
Mail-Summary-Tools # DT::Format::DateManip is broken
MediaWiki-USERINFO # broken
-Mildew # depends on mxms
+Metabase-Backend-MongoDB # broken
+Metabase-Backend-SQL # broken (I think)
+Method-Signatures # doesn't like ANY_MOOSE=Moose
mobirc # http::engine broken
MooseX-Attribute-Prototype # uses old moose apis
MooseX-DBIC-Scaffold # needs unreleased sql-translator
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
Pinto-Common # broken
Pinto-Server # deps on pinto::common
Plack-Middleware-Image-Scale # Image::Scale is broken
+Pod-Parser-I18N # missing dep on Data::Localize
POE-Component-CPAN-Mirror-Multiplexer # broken
+POE-Component-DirWatch # intermittent failures
+POE-Component-DirWatch-Object # intermittent failures
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
RPC-Any # broken
Scene-Graph # has '+attr' in roles
Server-Control # proc::processtable doesn't load
+Shipment # locale::subcountry is broken
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
Tapper-CLI # sys::info::driver::linux is broken
Tapper-Installer # sys::info::driver::linux is broken
Tapper-MCP-MessageReceiver # sys::info::driver::linux is broken
-Tapper-MCP # sys::info::driver::linux is broken
Tapper-Reports-API # sys::info::driver::linux is broken
Tapper-Testplan # sys::info::driver::linux is broken
Telephone-Mnemonic-US # rpm-build-perl is broken
Template-Plugin-Heritable # weird dep issues (not test::dm related)
Test-A8N # broken
-Test-BDD-Cucumber # clone::fast is broken
Test-Daily # configure errors
Test-Pockito # broken
Test-SFTP # Term::ReadPassword prompts in tests
Weather-TW # missing dep on Mojo::DOM
Web-API-Mapper # broken
WebNano-Controller-CRUD # broken
-WebService-SlimTimer # depends on mxms
+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
WWW-Sitemapper # broken
WWW-Yahoo-Lyrics-JP # broken
XIRCD # undeclared deps
XML-EPP # coerce without coercion
-XML-LibXSLT-Easy # missing dep on mx-getopt, deps on mxms
XML-SRS # deps on prang
+XML-Writer-Compiler # broken tests
Yukki # git::repository is broken
-Zucchini # File::Rsync prompts in Makefile.PL