4 use Cwd qw( abs_path );
11 This test will not run unless you set MOOSE_TEST_MD to a true value.
14 all Test every distro which depends on Moose except those that we know
15 cannot be tested. This is a lot of distros (thousands).
17 MooseX Test all Moose extension distros
18 (MooseX modules plus a few others).
20 $true Any other true value runs the default tests. We pick 200 random
21 distros and test them.
25 plan skip_all => $help
26 unless $ENV{MOOSE_TEST_MD};
30 'Archive::Zip' => 0, # or else .zip dists won't be able to be installed
31 'Test::DependentModules' => '0.13',
32 'MetaCPAN::API' => '0.33',
35 use Test::DependentModules qw( test_module );
38 use List::MoreUtils qw(any);
41 diag( 'Test run performed at: '
44 . (Moose->VERSION || 'git repo') );
46 $ENV{PERL_TEST_DM_LOG_DIR} = abs_path('.');
47 delete @ENV{ qw( AUTHOR_TESTING RELEASE_TESTING SMOKE_TESTING ) };
49 $ENV{ANY_MOOSE} = 'Moose';
51 my $mcpan = MetaCPAN::API->new;
52 my $res = $mcpan->post(
53 '/release/_search' => {
54 query => { match_all => {} },
58 { term => { 'release.dependency.module' => 'Moose' } },
59 { term => { 'release.dependency.module' => 'Moose::Role' } },
60 { term => { 'release.dependency.module' => 'Moose::Exporter' } },
61 { term => { 'release.dependency.module' => 'Class::MOP' } },
62 { term => { 'release.dependency.module' => 'MooseX::Role::Parameterized' } },
63 { term => { 'release.dependency.module' => 'Any::Moose' } },
65 { term => { 'release.status' => 'latest' } },
66 { term => { 'release.maturity' => 'released' } },
68 fields => 'distribution'
72 my @skip_prefix = qw(Acme Task Bundle);
77 for my $line (<DATA>) {
79 next unless $line =~ /\S/;
80 if ( $line =~ /^# (\w+)/ ) {
81 die "Invalid action in DATA section ($1)"
82 unless $1 eq 'SKIP' || $1 eq 'TODO';
83 $hash = $1 eq 'SKIP' ? \%skip : \%todo;
86 my ( $dist, $reason ) = $line =~ /^(\S*)\s*(?:#\s*(.*)\s*)?$/;
87 next unless defined $dist && length $dist;
89 $hash->{$dist} = $reason;
93 'App-passmanager' => 'App::PassManager',
94 'App-PipeFilter' => 'App::PipeFilter::Generic',
95 'Constructible' => 'Constructible::Maxima',
96 'DCOLLINS-ANN-Locals' => 'DCOLLINS::ANN::Robot',
97 'Dist-Zilla-Deb' => 'Dist::Zilla::Plugin::Deb::VersionFromChangelog',
98 'Dist-Zilla-Plugins-CJM' => 'Dist::Zilla::Plugin::TemplateCJM',
99 'Dist-Zilla-Plugin-TemplateFile' => 'Dist::Zilla::Plugin::TemplateFiles',
100 'Google-Directions' => 'Google::Directions::Client',
102 'HTML-Untemplate' => 'HTML::Linear',
103 'marc-moose' => 'MARC::Moose',
104 'mobirc' => 'App::Mobirc',
105 'OWL-Simple' => 'OWL::Simple::Class',
106 'Patterns-ChainOfResponsibility' => 'Patterns::ChainOfResponsibility::Application',
107 'Pod-Elemental-Transfomer-VimHTML' => 'Pod::Elemental::Transformer::VimHTML',
108 'Role-Identifiable' => 'Role::Identifiable::HasIdent',
109 'smokebrew' => 'App::SmokeBrew',
110 'Treex-Parser-MSTperl' => 'Treex::Tool::Parser::MSTperl',
112 'WebService-LOC-CongRec' => 'WebService::LOC::CongRec::Crawler',
113 'X11-XCB' => 'X11::XCB::Connection',
114 'XML-Ant-BuildFile' => 'XML::Ant::BuildFile::Project',
119 grep { my $dist = $_; !any { $dist =~ /^$_-/ } @skip_prefix }
120 map { $_->{fields}{distribution} }
121 @{ $res->{hits}{hits} };
123 if ( $ENV{MOOSE_TEST_MD} eq 'MooseX' ) {
124 @dists = grep { /^(?:MooseX-|Fey-ORM)/ } @dists;
126 elsif ( $ENV{MOOSE_TEST_MD} ne 'all' ) {
129 Picking 200 random dependents to test. Set MOOSE_TEST_MD=all to test all
130 dependents or MOOSE_TEST_MD=MooseX to test extension modules only.
135 while ( keys %indexes < 200 ) {
136 $indexes{ int rand( scalar @dists ) } = 1;
139 @dists = @dists[ sort keys %indexes ];
142 plan tests => scalar @dists;
143 for my $dist (@dists) {
146 $module = $name_fix{$module} if exists $name_fix{$module};
148 my $reason = $todo{$dist};
149 $reason = '???' unless defined $reason;
150 local $TODO = $reason;
151 eval { test_module($module); 1 }
152 or fail("Died when testing $module: $@");
155 eval { test_module($module); 1 }
156 or fail("Died when testing $module: $@");
161 # SKIP: indexing issues (test::dm bugs?)
162 Alice # couldn't find on cpan
163 Hopkins # couldn't find on cpan
164 PostScript-Barcode # couldn't find on cpan
165 WWW-Mechanize-Query # couldn't find on cpan
167 # SKIP: doesn't install deps properly (test::dm bugs?)
168 App-Benchmark-Accessors # Mojo::Base isn't installed
169 Bot-BasicBot-Pluggable # Crypt::SaltedHash isn't installed
170 Code-Statistics # MooseX::HasDefaults::RO isn't installed
171 Dist-Zilla-PluginBundle-MITHALDU # List::AllUtils isn't installed
172 Dist-Zilla-Util-FileGenerator # MooseX::HasDefaults::RO isn't installed
173 EBI-FGPT-FuzzyRecogniser # GO::Parser isn't installed
174 Erlang-Parser # Parse::Yapp::Driver isn't installed
175 Foorum # Sphinx::Search isn't installed
176 Grimlock # DBIx::Class::EncodedColumn isn't installed
177 Locale-Handle-Pluggable # MooseX::Types::VariantTable::Declare isn't installed
178 mobirc # HTTP::Session::State::GUID isn't installed
179 Net-Bamboo # XML::Tidy isn't installed
180 Tatsumaki-Template-Markapl # Tatsumaki::Template isn't installed
181 Text-Tradition # Bio::Phylo::IO isn't installed
182 WebService-Strava # Any::URI::Escape isn't installed
185 AI-ExpertSystem-Advanced # no tests
186 API-Assembla # no tests
187 App-mkfeyorm # no tests
188 App-passmanager # no tests
189 App-Scrobble # no tests
190 Bot-Applebot # no tests
191 Catalyst-Authentication-Credential-Facebook-OAuth2 # no tests
192 Catalyst-Authentication-Store-Fey-ORM # no tests
193 Catalyst-Controller-MovableType # no tests
194 Catalyst-Model-MenuGrinder # no tests
196 Data-SearchEngine-ElasticSearch # no tests
197 Dist-Zilla-MintingProfile-Author-ARODLAND # no tests
198 Dist-Zilla-PluginBundle-ARODLAND # no tests
199 Dist-Zilla-PluginBundle-Author-OLIVER # no tests
200 Dist-Zilla-PluginBundle-NUFFIN # no tests
201 Dist-Zilla-Plugin-DualLife # no tests
202 Dist-Zilla-Plugin-GitFlow # no tests
203 Dist-Zilla-Plugin-GitFmtChanges # no tests
204 Dist-Zilla-Plugin-MetaResourcesFromGit # no tests
205 Dist-Zilla-Plugin-ModuleBuild-OptionalXS # no tests
206 Dist-Zilla-Plugin-Rsync # no tests
207 Dist-Zilla-Plugin-TemplateFile # no tests
208 Dist-Zilla-Plugin-UploadToDuckPAN # no tests
209 Finance-Bank-SuomenVerkkomaksut # no tests
210 Games-HotPotato # no tests
212 JIRA-Client-REST # no tests
213 Kafka-Client # no tests
214 LWP-UserAgent-OfflineCache # no tests
215 Markdown-Pod # no tests
216 MooseX-Types-DateTimeX # no tests
217 MooseX-Types-DateTime-MoreCoercions # no tests unless DateTime::Format::DateManip is installed
218 Net-Azure-BlobService # no tests
219 Net-Dropbox # no tests
220 Net-Flowdock # no tests
221 Net-OpenStack-Attack # no tests
222 Net-Ostrich # no tests
223 Net-Recurly # no tests
224 OpenDocument-Template # no tests
225 Pod-Weaver-Section-Consumes # no tests
226 Pod-Weaver-Section-Encoding # no tests
227 Pod-Weaver-Section-Extends # no tests
228 POE-Component-Server-MySQL # no tests
229 Random-Quantum # no tests
230 SchemaEvolution # no tests
232 Test-System # no tests
233 Test-WWW-Mechanize-Dancer # no tests
234 WebService-Buxfer # no tests
235 WebService-CloudFlare-Host # no tests
236 WWW-MenuGrinder # no tests
239 # SKIP: external dependencies
240 AnyEvent-MSN # requires Net::SSLeay (which requires libssl)
241 AnyEvent-Multilog # requires multilog
242 AnyEvent-Net-Curl-Queued # requires libcurl
243 AnyEvent-ZeroMQ # requires zeromq installation
244 AnyMQ-ZeroMQ # requires zeromq installation
245 Apache2-HttpEquiv # requires apache (for mod_perl)
246 App-Mimosa # requires fastacmd
247 App-PgCryobit # requires postgres installation
248 App-SimplenoteSync # requires File::ExtAttr which requires libattr
249 Archive-RPM # requires cpio
250 Bot-Jabbot # requires libidn
251 Catalyst-Engine-Stomp # depends on alien::activemq
252 Catalyst-Plugin-Session-Store-Memcached # requires memcached
253 Cave-Wrapper # requires cave to be installed
254 CHI-Driver-Redis # requires redis server
255 Crypt-Random-Source-Strong-Win32 # windows only
256 Curses-Toolkit # requires Curses which requires ncurses library
257 Dackup # requires ssh
258 Data-Collector # requires ssh
259 DBIx-PgLink # requires postgres installation
260 Dist-Zilla-Plugin-Subversion # requires svn bindings
261 Dist-Zilla-Plugin-SVK # requires svn bindings
262 Dist-Zilla-Plugin-SvnObtain # requires svn bindings
263 Fedora-App-MaintainerTools # requires rpm to be installed
264 Fedora-App-ReviewTool # requires koji to be installed
265 Fuse-Template # requires libfuse
266 Games-HotPotato # requires sdl
267 Games-Tetris-Complete # requires threads
269 HTML-Barcode-QRCode # requires libqrencode
270 IRC-RemoteControl # requires libssh2
271 JavaScript-Sprockets # requires sprocketize
272 JavaScript-V8x-TestMoreish # requires v8
273 Koha-Contrib-Tamil # requires yaz
275 Lighttpd-Control # requires lighttpd
276 Lingua-TreeTagger # requires treetagger to be installed
277 Math-Lsoda # requires f77
278 MongoDBI # requires mongo
279 MongoDB # requires mongo
280 MSWord-ToHTML # requires abiword to be installed
281 Net-DBus-Skype # requires dbus
282 Net-Route # requires route
283 Net-SFTP-Foreign-Exceptional # depends on running ssh
284 Net-UpYun # requires curl
285 Net-ZooTool # requires curl
286 Nginx-Control # requires nginx to be installed
287 NLP-Service # requires javac
288 Padre-Plugin-Cookbook # requires Wx
289 Padre-Plugin-Moose # requires threaded perl
290 Padre-Plugin-PDL # requires threaded perl
291 Padre-Plugin-Snippet # requires threaded perl
292 Paludis-UseCleaner # depends on cave::wrapper
293 Perlanet # HTML::Tidy requires tidyp
294 Perl-Dist-Strawberry-BuildPerl-5123 # windows only
295 Perl-Dist-Strawberry-BuildPerl-5123 # windows only
296 Perl-Dist-WiX-BuildPerl-5123 # windows only
297 Perl-Dist-WiX # windows only
298 Perl-Dist-WiX # windows only
299 POE-Component-OpenSSH # requires ssh
300 RDF-TrineX-RuleEngine-Jena # requires Jena
301 SimpleDB-Class # requires memcached
302 SVN-Simple-Hook # requires svn
303 SVN-Tree # requires svn
304 Tapper-MCP # depends on everything under the sun - some of which is broken
305 Template-JavaScript # requires v8
306 TheSchwartz-Moosified # requires DBI::Pg ?
307 WebService-SendGrid # requires curl
308 WebService-Tesco-API # requires curl
309 WWW-Contact # depends on curl
310 WWW-Curl-Simple # requires curl
311 ZeroMQ-PubSub # requires zmq
312 ZMQ-Declare # requires zmq
314 # SKIP: flaky internet tests
315 iTransact-Lite # tests rely on internet site
316 Unicode-Emoji-E4U # tests rely on internet site
317 WWW-eNom # tests rely on internet site
318 WWW-Finances-Bovespa # tests rely on internet site
319 WWW-Vimeo-Download # tests rely on internet site
320 WWW-YouTube-Download-Channel # tests rely on internet site
323 App-CPAN2Pkg # tk tests are graphical
324 App-USBKeyCopyCon # gtk tests are graphical
325 CatalystX-Restarter-GTK # gtk tests are graphical
326 Forest-Tree-Viewer-Gtk2 # gtk tests are graphical
327 Games-Pandemic # tk tests are graphical
328 Games-RailRoad # tk tests are graphical
329 Games-Risk # tk tests are graphical
330 Log-Dispatch-Gtk2-Notify # gtk tests are graphical
331 LPDS # gtk tests are graphical
332 Periscope # gtk tests are graphical
333 Tk-Role-Dialog # tk tests are graphical
334 Weaving-Tablet # tk tests are graphical
336 # SKIP: prompts (or a dep prompts) or does something else dumb
337 Bot-Backbone # poe-loop-ev prompts
338 Cache-Ehcache # hangs if server exists on port 8080
339 CM-Permutation # OpenGL uses graphics in Makefile.PL
340 Date-Biorhythm # Date::Business prompts in Makefile.PL
341 Gearman-Driver # spews tar errors
342 Net-SSH-Mechanize # the mock-ssh script it runs seems to spin endlessly
343 WWW-Hashdb # test hangs, pegging cpu
344 Zucchini # File::Rsync prompts in Makefile.PL
345 DBIx-VersionedDDL # runs a script with /usr/bin/perl in the shbang line
347 # TODO: failing for a reason
348 Algorithm-KernelKMeans # mx-types-common changes broke it
349 AnyEvent-BitTorrent # broken
350 AnyEvent-Cron # intermittent failures
351 AnyEvent-Inotify-Simple # ??? (maybe issue with test::sweet)
352 AnyEvent-JSONRPC # tests require recommended deps
353 AnyEvent-Retry # mx-types-common changes broke it
354 AnyMongo # doesn't compile
355 App-ArchiveDevelCover # depends on nonexistent testdata::setup
356 App-Dataninja # bad M::I install in inc/
357 App-Fotagger # Imager doesn't compile
358 App-Magpie # deps on URPM which doesn't exist
359 App-MediaWiki2Git # git::repository is broken
360 App-Munchies # depends on XML::DTD
361 App-TemplateServer # broken use of types
362 App-TemplateServer-Provider-HTML-Template # dep on app-templateserver
363 App-TemplateServer-Provider-Mason # dep on app-templateserver
364 App-TemplateServer-Provider-TD # dep on app-templateserver
365 App-Twimap # dep on Web::oEmbed::Common
366 App-Validation-Automation # dep on Switch
368 Beagle # depends on term::readline::perl
369 Cache-Profile # broken
370 Catalyst-Authentication-Store-LDAP-AD-Class # pod coverage fail
371 Catalyst-Controller-Resources # broken
372 Catalyst-Controller-SOAP # broken
373 Catalyst-Model-Sedna # deps on Alien-Sedna which doesn't exist
374 Catalyst-Plugin-Continuation # undeclared dep
375 Catalyst-Plugin-Session-State-Cookie # broken
376 Catalyst-Plugin-Session-Store-TestMemcached # dep with corrupt archive
377 Catalyst-Plugin-SwiffUploaderCookieHack # undeclared dep
378 Catalyst-TraitFor-Request-PerLanguageDomains # dep on ::State::Cookie
379 CatalystX-I18N # dep on ::State::Cookie
380 CatalystX-MooseComponent # broken
381 CatalystX-SimpleLogin # broken
382 CatalystX-Usul # proc::processtable doesn't load
383 Cheater # parse::randgen is broken
384 Class-OWL # uses CMOP::Class without loading cmop
385 Cogwheel # uses ancient moose apis
386 Config-Model # broken
387 Config-Model-Backend-Augeas # deps on Config::Model
388 Config-Model-OpenSsh # deps on Config::Model
389 Constructible # GD::SVG is a broken dist
390 Constructible-Maxima # GD::SVG is a broken dist
391 Coro-Amazon-SimpleDB # amazon::simpledb::client doesn't exist
392 CPAN-Digger # requires DBD::SQLite
393 Data-AMF # missing dep on YAML
394 Data-Apache-mod_status # invalid characters in type name
395 Data-Edit # dist is missing some modules
396 Data-Feed # broken (only sometimes?)
397 Data-PackageName # broken
398 Data-Pipeline # uses ancient moose apis
399 Data-SCORM # pod coverage fail
400 DayDayUp # MojoX-Fixup-XHTML doesn't exist
401 DBICx-Modeler-Generator # broken (weirdly)
402 DBIx-SchemaChecksum # broken
403 Debian-Apt-PM # configure time failures
404 Devel-Events # broken (role conflict)
405 Dist-Zilla-Deb # pod coverage fail
406 Dist-Zilla-Plugin-ChangelogFromGit-Debian # git::repository is broken
407 Dist-Zilla-Plugin-ProgCriticTests # broken
408 DustyDB # uses old moose apis
410 Facebook-Graph # broken
411 Fedora-Bugzilla # deps on nonexistent things
412 FFmpeg-Thumbnail # undeclared dep
413 File-DataClass # XML::DTD is a broken dist
414 File-Stat-Moose # old moose apis
415 File-Tail-Dir # intermittent fails (i think)
416 Form-Factory # uses old moose apis
417 FormValidator-Nested # broken
419 Games-Dice-Loaded # flaky tests
421 GOBO # coerce with no coercion
422 Google-Chart # recreating type constraints
423 Google-Spreadsheet-Agent # pod::coverage fail
424 Hobocamp # configure_requires needs EU::CChecker
425 Horris # App::Horris isn't on cpan
426 HTML-Grabber # pod::coverage fail
427 HTML-TreeBuilderX-ASP_NET # broken
428 HTTP-Engine-Middleware # missing dep on yaml
429 Image-Robohash # Graphics::Magick doesn't exist
430 JavaScript-Framework-jQuery # coerce with no coercion
431 Jifty # Test::WWW::Selenium needs devel::repl
434 Kamaitachi # pod::coverage fail
435 KiokuDB-Backend-Files # broken
436 LaTeX-TikZ # broken (with moose)
437 marc-moose # broken (only sometimes?)
438 Mail-Summary-Tools # DT::Format::DateManip is broken
439 MediaWiki-USERINFO # broken
440 Method-Signatures # doesn't like ANY_MOOSE=Moose
441 mobirc # http::engine broken
442 MooseX-Attribute-Prototype # uses old moose apis
443 MooseX-DBIC-Scaffold # needs unreleased sql-translator
444 MooseX-Documenter # broken
445 MooseX-DOM # "no Moose" unimports confess
446 MooseX-Error-Exception-Class # metaclass compat breakage
447 MooseX-Getopt-Usage # missing dep on Test::Class
448 MooseX-Meta-Attribute-Index # old moose apis
449 MooseX-Meta-Attribute-Lvalue # old moose apis
450 MooseX-Role-XMLRPC-Client # requires LWP::Protocol::http which requires libssl
451 MooseX-Scaffold # broken
452 MooseX-Struct # ancient moose apis
453 MooseX-Types-Parameterizable # broken
454 MooseX-WithCache # broken
455 MouseX-Types # broken (with moose)
456 MySQL-Util # pod-coverage fail
457 Nagios-Passive # broken
458 Net-APNS # broken (with moose)
460 Net-Fluidinfo # broken
461 Net-Google-Blogger # broken
462 Net-Google-FederatedLogin # broken
463 NetHack-Item # NH::Monster::Spoiler is broken
464 NetHack-Monster-Spoiler # broken (MX::CA issues)
465 Net-HTTP-Factual # broken
466 Net-Jabber-Bot # broken
469 Net-Parliament # broken
471 Net-SSLeay-OO # broken
472 Net-StackExchange # broken
473 Norma # fails when trying to write to a read-only SQLite db file under jenkins, also fails when run manually
474 ODG-Record # Test::Benchmark broken
475 Perlbal-Control # proc::processtable doesn't load
476 Pg-BulkCopy # hardcodes /usr/bin/perl
477 Pinto-Common # broken
478 Pinto-Server # deps on pinto::common
479 Plack-Middleware-Image-Scale # Image::Scale is broken
480 Pod-Parser-I18N # missing dep on Data::Localize
481 POE-Component-CPAN-Mirror-Multiplexer # broken
482 POE-Component-DirWatch # intermittent failures
483 POE-Component-DirWatch-Object # intermittent failures
484 POE-Component-ResourcePool # broken
485 POE-Component-Server-PSGI # broken deps
486 POE-Component-Server-SimpleHTTP-PreFork # broken deps
487 Poet # missing dep on Log::Any::Adapter::Log4perl
488 POEx-ProxySession # broken deps
489 POEx-PubSub # broken deps
490 POEx-WorkerPool # broken deps
491 PostScript-ScheduleGrid-XMLTV # XMLTV doesn't exist
493 Prophet # depends on term::readline::perl
495 Railsish # dep on nonexistent dist
496 RDF-Server # "no Moose" unimports confess
497 Reaction # signatures is broken
498 Reflexive-Role-DataMover # broken (reflex::role changes?)
499 Reflexive-Role-TCPServer # broken (reflex::role changes?)
500 Reflexive-Stream-Filtering # broken
502 Scene-Graph # has '+attr' in roles
503 Server-Control # proc::processtable doesn't load
504 Shipment # locale::subcountry is broken
505 Silki # image::magick is broken
506 SilkiX-Converter-Kwiki # file::mimeinfo expects (?-xism:
507 Sloth # rest::utils is broken
508 Sque # couldn't fork server for testing
509 SRS-EPP-Proxy # depends on xml::epp
510 String-Blender # broken
512 Tail-Tool # Getopt::Alt doesn't exist
513 Tapper-CLI # sys::info::driver::linux is broken
514 Tapper-Installer # sys::info::driver::linux is broken
515 Tapper-MCP-MessageReceiver # sys::info::driver::linux is broken
516 Tapper-Reports-API # sys::info::driver::linux is broken
517 Tapper-Testplan # sys::info::driver::linux is broken
518 Telephone-Mnemonic-US # rpm-build-perl is broken
519 Template-Plugin-Heritable # weird dep issues (not test::dm related)
521 Test-Daily # configure errors
522 Test-Pockito # broken
523 Test-SFTP # Term::ReadPassword prompts in tests
524 Test-WWW-Selenium-More # Test::WWW::Selenium needs devel::repl
525 Text-Clevery # broken
526 Thorium # depends on Hobocamp
527 TryCatch-Error # broken
528 Verby # deps on poe::component::resourcepool
529 Weather-TW # missing dep on Mojo::DOM
530 Web-API-Mapper # broken
531 WebNano-Controller-CRUD # broken
532 Webservice-Intermine # broken tests
533 WebService-Yes24 # broken
535 WWW-Alltop # XML::SimpleObject configure fail
536 WWW-DataWiki # broken
537 WWW-Fandango # bad dist
539 WWW-Mechanize-Cached # tries to read from wrong build dir?
540 WWW-Metalgate # Cache is broken
541 WWW-Scramble # pod::coverage fail
542 WWW-Sitemapper # broken
543 WWW-StaticBlog # time::sofar is broken
544 WWW-WebKit # missing configure_req on EU::PkgConfig
545 WWW-Yahoo-Lyrics-JP # broken
546 XIRCD # undeclared deps
547 XML-EPP # coerce without coercion
548 XML-SRS # deps on prang
549 XML-Writer-Compiler # broken tests
550 Yukki # git::repository is broken