Add Jenkins-NotificationListener to TODO list
[gitmo/Moose.git] / xt / author / test-my-dependents.t
index 0c04e59..3904c23 100644 (file)
@@ -5,15 +5,33 @@ use Cwd qw( abs_path );
 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;
@@ -23,7 +41,7 @@ use Moose ();
 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 ) };
@@ -51,46 +69,25 @@ my $res = $mcpan->post(
     }
 );
 
-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',
@@ -116,19 +113,39 @@ my %name_fix = (
     '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 }
@@ -141,12 +158,13 @@ for my $dist (@dists) {
 }
 
 __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
@@ -161,8 +179,9 @@ mobirc                                 # HTTP::Session::State::GUID isn't instal
 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
@@ -195,6 +214,7 @@ Kafka-Client                           # 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
@@ -216,18 +236,24 @@ WebService-CloudFlare-Host             # 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
@@ -236,10 +262,12 @@ Dist-Zilla-Plugin-SVK                  # requires svn bindings
 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
@@ -250,9 +278,14 @@ Math-Lsoda                             # requires f77
 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
@@ -268,17 +301,25 @@ RDF-TrineX-RuleEngine-Jena             # requires Jena
 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
@@ -292,7 +333,21 @@ Periscope                              # 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
+POE-Component-Server-SimpleHTTP-PreFork # tests hang
+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
@@ -314,7 +369,6 @@ App-Twimap                             # dep on Web::oEmbed::Common
 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
@@ -331,7 +385,6 @@ 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
@@ -347,7 +400,6 @@ Data-Feed                              # broken (only sometimes?)
 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
@@ -355,19 +407,25 @@ 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
 Facebook-Graph                         # broken
+FCGI-Engine                            # runs scripts without using $^X
 Fedora-Bugzilla                        # deps on nonexistent things
 FFmpeg-Thumbnail                       # undeclared dep
 File-DataClass                         # XML::DTD is a broken dist
 File-Stat-Moose                        # old moose apis
 File-Tail-Dir                          # intermittent fails (i think)
 Form-Factory                           # uses old moose apis
+Form-Sensible                          # broken
 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
@@ -378,6 +436,7 @@ HTML-TreeBuilderX-ASP_NET              # broken
 HTTP-Engine-Middleware                 # missing dep on yaml
 Image-Robohash                         # Graphics::Magick doesn't exist
 JavaScript-Framework-jQuery            # coerce with no coercion
+Jenkins-NotificationListener           # missing dep on File::Read
 Jifty                                  # Test::WWW::Selenium needs devel::repl
 JSORB                                  # broken
 Jungle                                 # broken
@@ -387,6 +446,8 @@ LaTeX-TikZ                             # broken (with moose)
 marc-moose                             # broken (only sometimes?)
 Mail-Summary-Tools                     # DT::Format::DateManip is broken
 MediaWiki-USERINFO                     # broken
+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
@@ -397,9 +458,11 @@ MooseX-Error-Exception-Class           # metaclass compat breakage
 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
@@ -411,11 +474,14 @@ Net-Google-FederatedLogin              # 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
@@ -429,6 +495,7 @@ 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
@@ -449,6 +516,7 @@ 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
@@ -466,19 +534,20 @@ Test-Pockito                           # broken
 Test-SFTP                              # Term::ReadPassword prompts in tests
 Test-WWW-Selenium-More                 # Test::WWW::Selenium needs devel::repl
 Text-Clevery                           # broken
+Text-Zilla                             # broken
 Thorium                                # depends on Hobocamp
 TryCatch-Error                         # broken
 Verby                                  # deps on poe::component::resourcepool
 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
@@ -489,5 +558,5 @@ WWW-Yahoo-Lyrics-JP                    # broken
 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