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