Commit | Line | Data |
dcc862ca |
1 | use Test::More; |
2 | BEGIN { |
3 | plan skip_all => <<'END_HELP' unless $ENV{MOO_TEST_MD}; |
4 | This test will not run unless you set MOO_TEST_MD to a true value. |
5 | |
6 | Valid values are: |
7 | |
8 | all Test every dist which depends on Moose except those |
9 | that we know cannot be tested. This is a lot of |
10 | distros (hundreds). |
11 | |
12 | Dist::1,Dist::2,... Test the individual dists listed. |
13 | |
14 | MooX Test all Moo extension distros. |
15 | |
16 | 1 Run the default tests. We pick 200 random dists and |
17 | test them. |
18 | END_HELP |
19 | } |
20 | |
21 | use Test::DependentModules qw( test_modules ); |
22 | use MetaCPAN::API; |
23 | use List::Util (); |
24 | |
4c58e020 |
25 | # avoid any modules that depend on these |
26 | my @bad_prereqs = qw(Gtk2 Padre Wx); |
27 | |
dcc862ca |
28 | my $mcpan = MetaCPAN::API->new; |
29 | my $res = $mcpan->post( |
30 | '/search/reverse_dependencies/Moo' => { |
31 | query => { |
32 | filtered => { |
33 | query => { "match_all" => {} }, |
34 | filter => { |
35 | and => [ |
36 | { term => { 'release.status' => 'latest' } }, |
37 | { term => { 'release.authorized' => \1 } }, |
4c58e020 |
38 | { not => { filter => { |
39 | or => [ |
40 | map { { term => { 'dependency.module' => $_ } } } @bad_prereqs, |
41 | ], |
42 | } } } |
dcc862ca |
43 | ], |
44 | }, |
45 | }, |
46 | }, |
47 | size => 5000, |
4c58e020 |
48 | fields => ['distribution', 'provides', 'metadata.provides'], |
dcc862ca |
49 | }, |
50 | ); |
51 | |
52 | my %bad_module; |
53 | foreach my $line (<DATA>) { |
54 | chomp $line; |
4c58e020 |
55 | if ($line =~ /^\s*(\S+)?\s*(#|$)/) { |
56 | $bad_module{$1}++ |
57 | if $1; |
dcc862ca |
58 | } |
59 | else { |
60 | die "Invalid entry in DATA section: $line"; |
61 | } |
62 | } |
63 | |
64 | my @modules = sort grep !/^(?:Task|Bundle|Acme)::/, grep !$bad_module{$_}, map { |
65 | if (my $provides = $_->{fields}{provides}) { |
66 | ref $provides ? (sort @$provides)[0] : $provides; |
67 | } |
4c58e020 |
68 | elsif (my $provides = $_->{fields}{'metadata.provides'}) { |
69 | (sort keys %$provides)[0]; |
70 | } |
dcc862ca |
71 | else { |
72 | my $dist = $_->{fields}{distribution}; |
73 | $dist =~ s/-/::/g; |
74 | $dist; |
75 | } |
76 | } @{ $res->{hits}{hits} }; |
77 | |
78 | if ( $ENV{MOO_TEST_MD} eq 'MooX' ) { |
79 | @modules = grep /^MooX(?:$|::)/, @modules; |
80 | } |
81 | elsif ( $ENV{MOO_TEST_MD} eq '1' ) { |
82 | diag(<<'EOF'); |
83 | Picking 200 random dependents to test. Set MOO_TEST_MD=all to test all |
84 | dependents or MOO_TEST_MD=MooX to test extension modules only. |
85 | EOF |
86 | @modules = (List::Util::shuffle(@modules))[0..199]; |
87 | } |
88 | elsif ( $ENV{MOO_TEST_MD} ne 'all' ) { |
89 | my @chosen = split /,/, $ENV{MOO_TEST_MD}; |
90 | my %modules = map { $_ => 1 } @modules; |
91 | if (my @unknown = grep { !$modules{$_} } @chosen) { |
92 | die "Unknown modules: @unknown"; |
93 | } |
94 | @modules = @chosen; |
95 | } |
96 | |
97 | plan tests => scalar @modules; |
98 | test_modules(@modules); |
99 | |
100 | __DATA__ |
4c58e020 |
101 | # no tests |
102 | CPAN::Mirror::Finder |
103 | Catmandu::AlephX |
104 | Device::Hue |
105 | Novel::Robot |
106 | Novel::Robot::Browser |
107 | Novel::Robot::Parser |
108 | Thrift::API::HiveClient |
109 | Tiezi::Robot::Parser |
110 | |
dcc862ca |
111 | # broken |
4c58e020 |
112 | App::Presto |
113 | Catmandu::Store::Lucy |
114 | Dancer2::Session::Sereal |
115 | Data::Localize |
116 | HTML::Zoom::Parser::HH5P |
117 | Message::Passing::ZeroMQ |
118 | Tak |
119 | |
120 | # broken tests |
121 | Template::Flute |
122 | Uninets::Check::Modules::HTTP |
123 | Uninets::Check::Modules::MongoDB |
124 | Uninets::Check::Modules::Redis |
125 | |
126 | # missing prereqs |
127 | Catmandu::Z3950 |
128 | Tiezi::Robot |
129 | |
130 | # bad prereq version listed |
131 | Dancer2::Session::Cookie |
132 | Dancer2::Session::JSON |
133 | |
134 | # broken, pending release |
135 | Hg::Lib |
136 | P9Y::ProcessTable |
137 | Net::Easypost |
138 | |
139 | # OS specific |
140 | Linux::AtaSmart |
141 | |
142 | # broken by Moo change, reported rt#84035 |
143 | Math::Rational::Approx |
dcc862ca |
144 | |