73a2c1c1d9c427e726bde4e3a40e261b8bb557d6
[gitmo/Moose.git] / xt / author / test-my-dependents.t
1 use strict;
2 use warnings;
3
4 use Cwd qw( abs_path );
5 use Test::More;
6
7 BEGIN {
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};
10 }
11
12 use Test::Requires {
13     'Archive::Zip' => 0, # or else .zip dists won't be able to be installed
14     'Test::DependentModules' => '0.09', # skip all if not installed
15     'MetaCPAN::API' => '0.33',
16 };
17 use Test::DependentModules qw( test_module );
18
19 use DateTime;
20 use List::MoreUtils qw(any);
21 use Moose ();
22
23 diag(     'Test run performed at: '
24         . DateTime->now
25         . ' with Moose '
26         . Moose->VERSION );
27
28 $ENV{PERL_TEST_DM_LOG_DIR} = abs_path('.');
29 delete @ENV{ qw( AUTHOR_TESTING RELEASE_TESTING SMOKE_TESTING ) };
30
31 $ENV{ANY_MOOSE} = 'Moose';
32
33 my $mcpan = MetaCPAN::API->new;
34 my $res = $mcpan->post(
35     '/release/_search' => {
36         query  => { match_all => {} },
37         size   => 5000,
38         filter => { and => [
39             { or => [
40                 { term => { 'release.dependency.module' => 'Moose' } },
41                 { term => { 'release.dependency.module' => 'Moose::Role' } },
42                 { term => { 'release.dependency.module' => 'Moose::Exporter' } },
43                 { term => { 'release.dependency.module' => 'Class::MOP' } },
44                 { term => { 'release.dependency.module' => 'MooseX::Role::Parameterized' } },
45                 { term => { 'release.dependency.module' => 'Any::Moose' } },
46             ] },
47             { term => { 'release.status'   => 'latest' } },
48             { term => { 'release.maturity' => 'released' } },
49         ] },
50         fields => 'distribution'
51     }
52 );
53
54 my %todo_reasons = map {
55     chomp;
56     /^(\S*)\s*(?:#\s*(.*)\s*)?$/;
57     defined($1) && length($1) ? ($1 => $2) : ()
58 } <DATA>;
59 my %todo = map { $_ => 1 } keys %todo_reasons;
60
61 my @skip_prefix = qw(Acme Task Bundle);
62 my %skip = map { $_ => 1 } (
63     'Dackup',                       # depends on running ssh
64     'Data-Collector',               # depends on running ssh
65     'Date-Biorhythm',               # Date::Business prompts in Makefile.PL
66     'helm',                         # depends on running ssh
67     'Net-SFTP-Foreign-Exceptional', # depends on running ssh
68     'POE-Component-OpenSSH',        # depends on running ssh
69     'Test-SFTP',                    # Term::ReadPassword prompts in tests
70     'WWW-Hashdb',                   # test hangs, pegging cpu
71     'Zucchini',                     # File::Rsync prompts in Makefile.PL
72 );
73
74 my %name_fix = (
75     'App-PipeFilter'                 => 'App::PipeFilter::Generic',
76     'Constructible'                  => 'Constructible::Maxima',
77     'DCOLLINS-ANN-Locals'            => 'DCOLLINS::ANN::Robot',
78     'Dist-Zilla-Deb'                 => 'Dist::Zilla::Plugin::Deb::VersionFromChangelog',
79     'Dist-Zilla-Plugin-TemplateFile' => 'Dist::Zilla::Plugin::TemplateFiles',
80     'Dist-Zilla-Plugins-CJM'         => 'Dist::Zilla::Plugin::TemplateCJM',
81     'OWL-Simple'                     => 'OWL::Simple::Class',
82     'Patterns-ChainOfResponsibility' => 'Patterns::ChainOfResponsibility::Application',
83     'Role-Identifiable'              => 'Role::Identifiable::HasIdent',
84     'X11-XCB'                        => 'X11::XCB::Connection',
85     'XML-Ant-BuildFile'              => 'XML::Ant::BuildFile::Project',
86     'helm'                           => 'Helm',
87     'marc-moose'                     => 'MARC::Moose',
88     'mobirc'                         => 'App::Mobirc',
89     'smokebrew'                      => 'App::SmokeBrew',
90     'v6-alpha'                       => 'v6',
91 );
92 my @modules = map  { exists $name_fix{$_} ? $name_fix{$_} : $_ }
93               sort
94               grep { !$skip{$_} }
95               grep { my $dist = $_; !any { $dist =~ /^$_-/ } @skip_prefix }
96               map  { $_->{fields}{distribution} }
97               @{ $res->{hits}{hits} };
98
99 plan tests => scalar @modules;
100 Test::DependentModules::_make_logs();
101 for my $module (@modules) {
102     diag($module);
103     if ($todo{$module}) {
104         my $reason = $todo_reasons{$module};
105         $reason = '???' unless defined $reason;
106         local $Test::DependentModules::TODO = $reason;
107         local $TODO = $reason;
108         eval { test_module($module); 1 }
109             or fail("Died when testing $module: $@");
110     }
111     else {
112         eval { test_module($module); 1 }
113             or fail("Died when testing $module: $@");
114     }
115 }
116
117 __DATA__
118 # not in cpan index
119 Black-Board                            # not found on cpan because of mxd
120 Hopkins                                # not found on cpan (?)
121 PostScript-Barcode                     # not found on cpan (?)
122 VirtualBox-Manage                      # not found on cpan because of mxd
123
124 # no tests
125 AI-ExpertSystem-Advanced
126 API-Assembla
127 App-mkfeyorm
128 Bot-Applebot
129 Catalyst-Authentication-Credential-Facebook-OAuth2
130 Catalyst-Authentication-Store-Fey-ORM
131 Catalyst-Controller-MovableType
132 Catalyst-Model-MenuGrinder
133 Chef
134 Data-SearchEngine-ElasticSearch
135 Dist-Zilla-Plugin-DualLife
136 Dist-Zilla-Plugin-GitFlow
137 Dist-Zilla-Plugin-MetaResourcesFromGit
138 Dist-Zilla-Plugin-Rsync
139 Dist-Zilla-PluginBundle-ARODLAND
140 Dist-Zilla-PluginBundle-Author-OLIVER
141 Dist-Zilla-PluginBundle-NUFFIN
142 Games-HotPotato
143 Kafka-Client
144 LWP-UserAgent-OfflineCache
145 Net-Dropbox
146 Net-Recurly
147 Pod-Weaver-Section-Encoding
148 POE-Component-Server-MySQL
149 Random-Quantum
150 SchemaEvolution
151 STD
152 Test-System
153 WebService-Buxfer
154 WebService-CloudFlare-Host
155 WWW-MenuGrinder
156
157 # failing for a reason
158 Algorithm-KernelKMeans                 # mx-types-common changes broke it
159 Alien-ActiveMQ                         # can't install activemq
160 AnyEvent-Inotify-Simple                # ??? (maybe issue with test::sweet)
161 AnyEvent-JSONRPC                       # tests require recommended deps
162 AnyEvent-Retry                         # mx-types-common changes broke it
163 AnyEvent-ZeroMQ                        # requires zeromq installation
164 App-CPAN2Pkg                           # Tk doesn't compile
165 App-Dataninja                          # bad M::I install in inc/
166 App-ForExample                         # getopt::chain is broken
167 App-Fotagger                           # Imager doesn't compile
168 App-HistHub                            # missing dep on JSON.pm
169 App-Magpie                             # deps on URPM which doesn't exist
170 App-PgCryobit                          # requires postgres installation
171 App-TemplateServer                     # broken use of types
172 App-TemplateServer-Provider-HTML-Template  # dep on app-templateserver
173 App-TemplateServer-Provider-Mason      # dep on app-templateserver
174 App-TemplateServer-Provider-TD         # dep on app-templateserver
175 App-TimeTracker                        # git::repository is broken
176 App-USBKeyCopyCon                      # gtk tests are graphical
177 Archive-RPM                            # requires cpio
178 Bio-MAGETAB                            # datetime-format-datemanip is broken
179 Bot-Backbone                           # broken deps
180 Business-UPS-Tracking                  # broken
181 Cache-Profile                          # broken
182 Catalyst-Authentication-Store-LDAP-AD-Class  # pod coverage fail
183 Catalyst-Controller-Resources          # broken
184 Catalyst-Engine-Stomp                  # requires alien::activemq
185 Catalyst-Model-Search-ElasticSearch    # requires elasticsearch
186 Catalyst-Model-Sedna                   # deps on Alien-Sedna which doesn't exist
187 Catalyst-Plugin-Continuation           # undeclared dep
188 Catalyst-Plugin-ErrorCatcher-ActiveMQ-Stomp  # pod coverage fail
189 Catalyst-Plugin-SwiffUploaderCookieHack  # undeclared dep
190 Catalyst-TraitFor-Component-ConfigPerSite  # undeclared dep
191 Catalyst-TraitFor-Controller-jQuery-jqGrid  # bad test (missing files)
192 CatalystX-MooseComponent               # broken
193 CatalystX-Restarter-GTK                # gtk tests are graphical
194 CatalystX-RoleApplicator               # broken
195 CatalystX-SimpleAPI                    # depends on ::RoleApplicator
196 CatalystX-SimpleLogin                  # broken
197 CatalystX-Usul                         # proc::processtable doesn't load
198 Cave-Wrapper                           # requires cave to be installed
199 Cheater                                # parse::randgen is broken
200 CHI-Driver-Redis                       # requires redis server
201 Class-OWL                              # uses CMOP::Class without loading cmop
202 CM-Permutation                         # OpenGL uses graphics in Makefile.PL
203 Cogwheel                               # uses ancient moose apis
204 Constructible                          # GD::SVG is a broken dist
205 Coro-Amazon-SimpleDB                   # amazon::simpledb::client doesn't exist
206 CPAN-Digger                            # requires DBD::SQLite
207 CPAN-Mini-Webserver                    # undeclared dep on lingua-stopwords
208 CPAN-Patches-Plugin-Debian             # configure time failures
209 Dackup                                 # depends on running ssh
210 Data-Apache-mod_status                 # invalid characters in type name
211 Data-Collector                         # depends on running ssh
212 Data-PackageName                       # broken
213 Data-Pipeline                          # uses ancient moose apis
214 Date-Biorhythm                         # Date::Business prompts in Makefile.PL
215 DayDayUp                               # MojoX-Fixup-XHTML doesn't exist
216 DBICx-Modeler-Generator                # broken (weirdly)
217 DBIx-PgLink                            # requires postgres installation
218 DBIx-SchemaChecksum                    # broken
219 Debian-Apt-PM                          # configure time failures
220 Devel-Events                           # broken (role conflict)
221 Dist-Zilla-Plugin-ProgCriticTests      # broken
222 Dist-Zilla-Plugin-SVK                  # requires svn bindings
223 DustyDB                                # uses old moose apis
224 ELF-Extract-Sections                   # uses stash entries with ::
225 ETLp                                   # uses stash entries with ::
226 Fedora-App-MaintainerTools             # requires rpm to be installed
227 Fedora-App-ReviewTool                  # requires koji to be installed
228 FFmpeg-Thumbnail                       # undeclared dep
229 File-DataClass                         # XML::DTD is a broken dist
230 Finance-Bank-SentinelBenefits-Csv401kConverter  # uses stash entries with ::
231 Forest-Tree-Viewer-Gtk2                # gtk tests are graphical
232 Form-Factory                           # uses old moose apis
233 Frost                                  # broken
234 Games-Pandemic                         # tk doesn't build
235 Games-RailRoad                         # tk doesn't build
236 Games-Risk                             # tk doesn't build
237 Games-Tetris-Complete                  # requires threads
238 Getopt-Chain                           # p::d::builder changed dists
239 GOBO                                   # coerce with no coercion
240 Google-Spreadsheet-Agent               # pod::coverage fail
241 helm                                   # depends on running ssh
242 Hobocamp                               # configure_requires needs EU::CChecker
243 Horris                                 # App::Horris isn't on cpan
244 HTML-TreeBuilderX-ASP_NET              # broken
245 IM-Engine-Plugin-Dispatcher            # p::d::declarative changed dists
246 JavaScript-Framework-jQuery            # coerce with no coercion
247 Jungle                                 # broken
248 Kamaitachi                             # pod::coverage fail
249 KiokuDB-Backend-Files                  # broken
250 Lingua-TreeTagger                      # requires treetagger to be installed
251 Locale-MO-File                         # broken
252 Log-Dispatch-Gtk2-Notify               # gtk tests are graphical
253 Mail-Summary-Tools                     # DT::Format::DateManip is broken
254 MediaWiki-USERINFO                     # broken
255 Mildew                                 # regexp::grammars needs class::accessor
256 mobirc                                 # http::engine broken
257 MooseX-Attribute-Prototype             # uses old moose apis
258 MooseX-DBIC-Scaffold                   # needs unreleased sql-translator
259 MooseX-Documenter                      # broken
260 MooseX-DOM                             # "no Moose" unimports confess
261 MooseX-Error-Exception-Class           # metaclass compat breakage
262 MooseX-Meta-Attribute-Index            # old moose apis
263 MooseX-Meta-Attribute-Lvalue           # old moose apis
264 MooseX-Struct                          # ancient moose apis
265 MooseX-TrackDirty-Attributes           # old moose apis
266 MSWord-ToHTML                          # requires abiword to be installed
267 namespace-alias                        # won't compile
268 Net-Douban                             # broken
269 Net-FluidDB                            # broken
270 Net-Fluidinfo                          # broken
271 NetHack-Item                           # NH::Monster::Spoiler is broken
272 NetHack-Monster-Spoiler                # broken (MX::CA issues)
273 Net-HTTP-Factual                       # broken
274 Net-Journyx                            # broken
275 Net-Parliament                         # broken
276 Net-Plurk                              # broken
277 Net-StackExchange                      # broken
278 Nginx-Control                          # requires nginx to be installed
279 ODG-Record                             # Test::Benchmark broken
280 Paludis-UseCleaner                     # needs cave::wrapper
281 Parse-FixedRecord                      # broken
282 Perlanet                               # HTML::Tidy requires tidyp
283 Perlbal-Control                        # proc::processtable doesn't load
284 Perl-Dist-Strawberry-BuildPerl-5123    # windows only
285 Perl-Dist-WiX-BuildPerl-5123           # windows only
286 Perl-Dist-WiX                          # windows only
287 Pg-BulkCopy                            # hardcodes /usr/bin/perl
288 POE-Component-CPAN-Mirror-Multiplexer  # broken
289 POE-Component-DirWatch-Object          # broken
290 POE-Component-OpenSSH                  # depends on running ssh
291 POE-Component-ResourcePool             # broken
292 POE-Component-Server-PSGI              # broken deps
293 POE-Component-Server-SimpleHTTP-PreFork  # broken deps
294 POEx-ProxySession                      # broken deps
295 POEx-PubSub                            # broken deps
296 POEx-WorkerPool                        # broken deps
297 Queue-Leaky                            # broken
298 RDF-Server                             # "no Moose" unimports confess
299 Reaction                               # signatures is broken
300 Reflexive-Role-Collective              # broken (reflex::role changes?)
301 Reflexive-Role-DataMover               # broken (reflex::role changes?)
302 Reflexive-Role-TCPServer               # broken (reflex::role changes?)
303 RPC-Any                                # broken
304 Scene-Graph                            # has '+attr' in roles
305 Server-Control                         # proc::processtable doesn't load
306 SilkiX-Converter-Kwiki                 # file::mimeinfo expects (?-xism:
307 SimpleDB-Class                         # requires memcached
308 SRS-EPP-Proxy                          # depends on xml::epp
309 String-Blender                         # broken
310 TAEB                                   # broken
311 Tail-Tool                              # Getopt::Alt doesn't exist
312 Tapper-Installer                       # sys::info::driver::linux is broken
313 Tapper-MCP-MessageReceiver             # sys::info::driver::linux is broken
314 Tapper-MCP                             # sys::info::driver::linux is broken
315 Tapper-Reports-API                     # sys::info::driver::linux is broken
316 Tapper-Testplan                        # sys::info::driver::linux is broken
317 Telephone-Mnemonic-US                  # rpm-build-perl is broken
318 Test-A8N                               # broken
319 Test-Daily                             # configure errors
320 Test-SFTP                              # Term::ReadPassword prompts in tests
321 Thorium                                # requires Hobocamp
322 Tk-Role-Dialog                         # tk won't compile
323 TryCatch-Error                         # broken
324 Verby                                  # requires poe::component::resourcepool
325 Weaving-Tablet                         # tk doesn't compile
326 WebService-SlimTimer                   # weird mxms error
327 WebService-Yes24                       # broken
328 WiX3                                   # broken
329 WWW-Alltop                             # XML::SimpleObject configure fail
330 WWW-Fandango                           # bad dist
331 WWW-FMyLife                            # broken
332 WWW-Hashdb                             # test hangs, pegging cpu
333 WWW-Metalgate                          # Cache is broken
334 WWW-Scramble                           # pod::coverage fail
335 WWW-StaticBlog                         # time::sofar is broken
336 WWW-Yahoo-Lyrics-JP                    # broken
337 XIRCD                                  # undeclared deps
338 XML-EPP                                # coerce without coercion
339 XML-LibXSLT-Easy                       # missing dep on mx-getopt
340 Yukki                                  # git::repository is broken
341 Zucchini                               # File::Rsync prompts in Makefile.PL