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 | |
25 | my $mcpan = MetaCPAN::API->new; |
26 | my $res = $mcpan->post( |
27 | '/search/reverse_dependencies/Moo' => { |
28 | query => { |
29 | filtered => { |
30 | query => { "match_all" => {} }, |
31 | filter => { |
32 | and => [ |
33 | { term => { 'release.status' => 'latest' } }, |
34 | { term => { 'release.authorized' => \1 } }, |
35 | ], |
36 | }, |
37 | }, |
38 | }, |
39 | size => 5000, |
40 | fields => ['distribution', 'provides'], |
41 | }, |
42 | ); |
43 | |
44 | my %bad_module; |
45 | foreach my $line (<DATA>) { |
46 | chomp $line; |
47 | if ($line =~ /^\s*(\S+)\s*(#|$)/) { |
48 | $bad_module{$1}++; |
49 | } |
50 | else { |
51 | die "Invalid entry in DATA section: $line"; |
52 | } |
53 | } |
54 | |
55 | my @modules = sort grep !/^(?:Task|Bundle|Acme)::/, grep !$bad_module{$_}, map { |
56 | if (my $provides = $_->{fields}{provides}) { |
57 | ref $provides ? (sort @$provides)[0] : $provides; |
58 | } |
59 | else { |
60 | my $dist = $_->{fields}{distribution}; |
61 | $dist =~ s/-/::/g; |
62 | $dist; |
63 | } |
64 | } @{ $res->{hits}{hits} }; |
65 | |
66 | if ( $ENV{MOO_TEST_MD} eq 'MooX' ) { |
67 | @modules = grep /^MooX(?:$|::)/, @modules; |
68 | } |
69 | elsif ( $ENV{MOO_TEST_MD} eq '1' ) { |
70 | diag(<<'EOF'); |
71 | Picking 200 random dependents to test. Set MOO_TEST_MD=all to test all |
72 | dependents or MOO_TEST_MD=MooX to test extension modules only. |
73 | EOF |
74 | @modules = (List::Util::shuffle(@modules))[0..199]; |
75 | } |
76 | elsif ( $ENV{MOO_TEST_MD} ne 'all' ) { |
77 | my @chosen = split /,/, $ENV{MOO_TEST_MD}; |
78 | my %modules = map { $_ => 1 } @modules; |
79 | if (my @unknown = grep { !$modules{$_} } @chosen) { |
80 | die "Unknown modules: @unknown"; |
81 | } |
82 | @modules = @chosen; |
83 | } |
84 | |
85 | plan tests => scalar @modules; |
86 | test_modules(@modules); |
87 | |
88 | __DATA__ |
89 | # broken |
90 | |