add name of failing tests to extract variables as fail:$path=$number_of_tests
[cpan-testers-parsereport.git] / t / ctgetreports.t
blobdca4ed477f2966b3fac5371371ef2ea4ced47043
1 #!perl -- -*- mode: cperl -*-
3 use strict;
4 use Test::More;
5 use File::Spec;
6 use CPAN::Testers::ParseReport;
7 use List::Util qw(sum);
8 use utf8;
9   binmode Test::More->builder->output, ":utf8";
10   binmode Test::More->builder->failure_output, ":utf8";
12 my $plan;
14 sub reportedvariableis ($$$$) {
15     my($extract,$id,$var,$value) = @_;
16     is $extract->{$var}, $value, "report $id: $var is $value";
20     BEGIN { $plan += 1 }
21     open my $fh, "<", qq{t/var/nntp-testers/1581994} or die "could not open: $!";
22     local $/;
23     my $article = <$fh>;
24     close $fh;
25     my $dump = {};
26     CPAN::Testers::ParseReport::parse_report(1234567, $dump, article => $article, solve => 1, quiet => 1);
27     my $keys = keys %{$dump->{"==DATA=="}[0]};
28     ok($keys >= 39, "found at least 39, actually [$keys] keys");
32     BEGIN {
33         $plan += 6;
34     }
35     my %Opt = (
36                'q' => ["meta:perl", "meta:from", "qr:(Undefined.*)", "prereq:Test::More"],
37                'local' => 1,
38                'cachedir' => 't/var',
39                'quiet' => 1,
40                'dumpvars' => ".",
41               );
42     CPAN::Testers::ParseReport::parse_distro
43           (
44            "Scriptalicious",
45            %Opt,
46           );
47     my $Y = CPAN::Testers::ParseReport::_yaml_loadfile("ctgetreports.out");
48     my $count = sum map {values %{$Y->{"meta:from"}{$_}}} keys %{$Y->{"meta:from"}};
49     is($count, 130, "found $count==130 reports via meta:from");
50     is($Y->{"meta:ok"}{PASS}{PASS}, 79, "found 79 PASS");
51     is($Y->{"prereq:Test::More"}{0}{PASS}, 70, "found 70 PASS on prereq Test::More==0");
52     ok(!$Y->{"env:alignbytes"}, "there is no such thing as an environment alignbytes");
53     my $undefined = $Y->{'qr:(Undefined.*)'};
54     my($the_warning) = grep {length} keys %$undefined;
55     ok($undefined,"found warning: '$the_warning'");
56     like($the_warning, qr/&main::/, "the ampersand is escaped");
60     BEGIN {
61         $plan += 1;
62     }
63     my %Opt = (
64                'q' => ["meta:perl", "meta:from", "prereq:Test::More"],
65                'local' => 1,
66                'cachedir' => 't/var',
67                'quiet' => 1,
68                'dumpvars' => ".",
69                'sample' => 99,
70               );
71     CPAN::Testers::ParseReport::parse_distro
72           (
73            "Scriptalicious",
74            %Opt,
75           );
76     my $Y = CPAN::Testers::ParseReport::_yaml_loadfile("ctgetreports.out");
77     my $count = sum map {values %{$Y->{"meta:from"}{$_}}} keys %{$Y->{"meta:from"}};
78     is($count, 99, "found $count==99 reports via meta:from");
82     BEGIN {
83         $plan += 5;
84     }
85     my $id = 18981290;
86     my %Opt = (
87                'q' => ["meta:perl", "meta:from", 'conf:libpth', 'conf:libs', 'conf:perllibs'],
88                'local' => 1,
89                'cachedir' => 't/var',
90                'quiet' => 1,
91                'dumpvars' => ".",
92                'report' => $id,
93               );
94     my $dumpvars = {};
95     my $extract = CPAN::Testers::ParseReport::parse_report
96           (
97            "t/var/nntp-testers/$id",
98            $dumpvars,
99            %Opt,
100           );
101     reportedvariableis $extract, $id, 'prereq:Text::Ligature', '0.02';
102     reportedvariableis $extract, $id, 'prereq:parent', '0';
103     # ld='cc', ldflags ='-pthread -Wl,-E  -fstack-protector -L/usr/local/lib'
104     # libpth=/usr/lib /usr/local/lib
105     # libs=-lgdbm -lm -lcrypt
106     # perllibs=-lm -lcrypt
107     # libc=, so=so, useshrplib=false, libperl=libperl.a
108     # gnulibc_version=''
109     reportedvariableis $extract, $id, 'conf:libpth', '/usr/lib /usr/local/lib';
110     reportedvariableis $extract, $id, 'conf:libs', '-lgdbm -lm -lcrypt';
111     reportedvariableis $extract, $id, 'conf:perllibs', '-lm -lcrypt';
115     BEGIN {
116         $plan += 1;
117     }
118     my %Opt = (
119                'q' => ["meta:perl", "meta:from", "prereq:Test::More"],
120                'local' => 1,
121                'cachedir' => 't/var',
122                'quiet' => 1,
123                'dumpvars' => ".",
124                'sample' => 999,
125               );
126     CPAN::Testers::ParseReport::parse_distro
127           (
128            "Scriptalicious",
129            %Opt,
130           );
131     my $Y = CPAN::Testers::ParseReport::_yaml_loadfile("ctgetreports.out");
132     my $count = sum map {values %{$Y->{"meta:from"}{$_}}} keys %{$Y->{"meta:from"}};
133     is($count, 130, "found $count==130 reports via meta:from");
137     BEGIN {
138         $plan += 3;
139     }
140     my $id = "3521214";
141     my %Opt = (
142                'q' => ["meta:perl", "meta:from", "conf:git_commit_id", "env:PERL5_MINISMOKEBOX"],
143                'local' => 1,
144                'cachedir' => 't/var',
145                'quiet' => 1,
146                'dumpvars' => ".",
147                'report' => $id,
148               );
149     my $dumpvars = {};
150     my $extract = CPAN::Testers::ParseReport::parse_report
151           (
152            "t/var/nntp-testers/$id",
153            $dumpvars,
154            %Opt,
155           );
156     reportedvariableis $extract, $id, 'conf:git_commit_id', '245490700bb744b58c708516d2d3c08f18583dc3';
157     reportedvariableis $extract, $id, 'env:AUTOMATED_TESTING', '1';
158     reportedvariableis $extract, $id, 'meta:date', '2009-03-20T03:29:23';
162     BEGIN {
163         $plan += 4;
164     }
165     my $id = 3851138;
166     my %Opt = (
167                'q' => ["meta:perl", "meta:from", "mod:Storable", "env:AUTOMATED_TESTING"],
168                'local' => 1,
169                'cachedir' => 't/var',
170                'quiet' => 1,
171                'dumpvars' => ".",
172                'report' => $id,
173               );
174     my $dumpvars = {};
175     my $extract = CPAN::Testers::ParseReport::parse_report
176           (
177            "t/var/nntp-testers/3851138",
178            $dumpvars,
179            %Opt,
180           );
181     like $extract->{'conf:archname'}, qr/64int/, "found 64int on archname";
182     reportedvariableis $extract, $id, 'env:AUTOMATED_TESTING', '1';
183     reportedvariableis $extract, $id, 'mod:Storable', '2.18';
184     reportedvariableis $extract, $id, 'meta:date', '2009-05-10T01:39:11';
188     BEGIN {
189         $plan += 4;
190     }
191     my $id = 5698506;
192     my %Opt = (
193                'q' => ["conf:nvsize", "conf:uselongdouble"],
194                'local' => 1,
195                'cachedir' => 't/var',
196                'quiet' => 1,
197                'dumpvars' => ".",
198                'report' => $id,
199               );
200     my $dumpvars = {};
201     my $extract = CPAN::Testers::ParseReport::parse_report
202           (
203            "t/var/nntp-testers/5698506",
204            $dumpvars,
205            %Opt,
206           );
207     reportedvariableis $extract, $id, 'conf:nvsize', 16;
208     reportedvariableis $extract, $id, 'conf:uselongdouble', 'define';
209     reportedvariableis $extract, $id, 'mod:ExtUtils::MakeMaker', '6.55_02';
210     reportedvariableis $extract, $id, 'meta:date', '2009-10-21T17:30:27';
214     BEGIN {
215         $plan += 4;
216     }
217     my $id = 5012315;
218     my %Opt = (
219                'q' => ["conf:nvsize", "conf:uselongdouble"],
220                'local' => 1,
221                'cachedir' => 't/var',
222                'quiet' => 1,
223                'dumpvars' => ".",
224                'report' => $id,
225               );
226     my $dumpvars = {};
227     my $extract = CPAN::Testers::ParseReport::parse_report
228           (
229            "t/var/nntp-testers/$id",
230            $dumpvars,
231            %Opt,
232           );
233     reportedvariableis $extract, $id, 'conf:nvsize', 8;
234     reportedvariableis $extract, $id, 'conf:uselongdouble', 'undef';
235     reportedvariableis $extract, $id, 'mod:ExtUtils::MakeMaker', '6.54';
236     reportedvariableis $extract, $id, 'meta:date', '2009-08-14T20:18:57';
240     BEGIN { $plan += 1 }
241     open my $fh, "-|", qq{"$^X" "-Ilib" "bin/ctgetreports" "--local" "--cachedir" "t/var" "--solve" "--quiet" "Scriptalicious" 2>&1} or die "could not fork: $!";
242     my @reg;
243     my @full;
244     while (<$fh>) {
245         push @reg, $1 if /^Regression '(.+)'/;
246         push @full, $_;
247     }
248     close $fh or diag join "", @full;
249     is "@reg", "fail:t/04-fork meta:writer mod:Test::Harness", "found the top 3 candidates";
251 # Up to 0.0.15:
253 # State after regression testing: 68 results, showing top 3
255 # (1)
256 # ****************************************************************
257 # Regression 'mod:Test::Harness'
258 # ****************************************************************
259 # Name                         Theta          StdErr     T-stat
260 # [0='const']                 1.0000          0.1021       9.80
261 # [1='eq_2.64']              -0.3846          0.1328      -2.90
262 # [2='eq_3.09']               0.0000          0.3228       0.00
263 # [3='eq_3.10']              -0.0200          0.1109      -0.18
264 # [4='eq_3.11']              -0.0000          0.2042      -0.00
265 # [5='eq_3.12']              -0.7143          0.1309      -5.46
266 # [6='eq_3.13']              -0.8696          0.1204      -7.22
267 # [7='eq_3.14']              -0.8667          0.1291      -6.71
269 # R^2= 0.628, N= 128, K= 8
270 # ****************************************************************
271 # (2)
272 # ****************************************************************
273 # Regression 'id'
274 # ****************************************************************
275 # Name                         Theta          StdErr     T-stat
276 # [0='const']                 2.4992          0.1514      16.51
277 # [1='n_id']                 -0.0000          0.0000     -12.66
279 # R^2= 0.560, N= 128, K= 2
280 # ****************************************************************
281 # (3)
282 # ****************************************************************
283 # Regression 'meta:date'
284 # ****************************************************************
285 # Name                         Theta          StdErr     T-stat
286 # [0='const']                93.9116          7.3952      12.70
287 # [1='n_meta:date']          -0.0000          0.0000     -12.62
289 # R^2= 0.558, N= 128, K= 2
290 # ****************************************************************
292 # From 0.0.16:
294 # State after regression testing: 110 results, showing top 3
296 # (1)
297 # ****************************************************************
298 # Regression 'meta:writer'
299 # ****************************************************************
300 # Name                         Theta          StdErr     T-stat
301 # [0='const']                 0.8929          0.0509      17.54
302 # [1='eq_CPAN-Reporter-1.1404']       0.1071          0.0992       1.08
303 # [2='eq_CPAN-Reporter-1.15']         0.1071          0.0720       1.49
304 # [3='eq_CPAN-Reporter-1.1556']      -0.8929          0.1440      -6.20
305 # [4='eq_CPAN-Reporter-1.16']        -0.8929          0.2741      -3.26
306 # [5='eq_CPAN-Reporter-1.1601']      -0.6929          0.1308      -5.30
307 # [6='eq_CPAN-Reporter-1.1651']      -0.7679          0.0844      -9.10
308 # [7='eq_CPAN-Reporter-1.17']        -0.6706          0.1032      -6.50
309 # [8='eq_CPAN-Reporter-1.1702']      -0.7817          0.0814      -9.61
310 # [9='eq_CPAN::YACSmoke 0.0307']              0.1071          0.1032       1.04
312 # R^2= 0.717, N= 128, K= 10
313 # ****************************************************************
314 # (2)
315 # ****************************************************************
316 # Regression 'mod:Test::Harness'
317 # ****************************************************************
318 # Name                         Theta          StdErr     T-stat
319 # [0='const']                 1.0000          0.1021       9.80
320 # [1='eq_2.64']              -0.3846          0.1328      -2.90
321 # [2='eq_3.09']               0.0000          0.3228       0.00
322 # [3='eq_3.10']              -0.0200          0.1109      -0.18
323 # [4='eq_3.11']              -0.0000          0.2042      -0.00
324 # [5='eq_3.12']              -0.7143          0.1309      -5.46
325 # [6='eq_3.13']              -0.8696          0.1204      -7.22
326 # [7='eq_3.14']              -0.8667          0.1291      -6.71
328 # R^2= 0.628, N= 128, K= 8
329 # ****************************************************************
330 # (3)
331 # ****************************************************************
332 # Regression 'id'
333 # ****************************************************************
334 # Name                         Theta          StdErr     T-stat
335 # [0='const']                 2.4992          0.1514      16.51
336 # [1='n_id']                 -0.0000          0.0000     -12.66
338 # R^2= 0.560, N= 128, K= 2
339 # ****************************************************************
345     BEGIN {
346         $plan += 9;
347     }
348     my $id = 5834678;
349     my %Opt = (
350                'q' => ["conf:nvsize", "conf:uselongdouble"],
351                'local' => 1,
352                'cachedir' => 't/var',
353                'quiet' => 1,
354                'dumpvars' => ".",
355                'report' => $id,
356               );
357     my $dumpvars = {};
358     my $extract = CPAN::Testers::ParseReport::parse_report
359           (
360            "t/var/nntp-testers/$id",
361            $dumpvars,
362            %Opt,
363           );
364     is $extract->{'meta:date'}, '2009-11-01T14:07:11', "report $id: date";
365     is $extract->{'conf:nvsize'}, 8, "report $id: found 8 on nvsize";
366     is $extract->{'conf:uselongdouble'}, 'undef', "report $id: found uselongdouble";
367     is $extract->{'mod:CPANPLUS'}, '0.89_06', "report $id: CPANPLUS version";
368     is $extract->{'mod:Cwd'}, '3.2501', "report $id: Cwd version";
369     is $extract->{'mod:File::Spec'}, '3.2501', "report $id: File::Spec version";
370     is $extract->{'mod:version'}, '0.7701', "report $id: version version";
371     is $extract->{'mod:ExtUtils::MakeMaker'}, '6.54', "report $id: ExtUtils::MakeMaker version";
372     is $extract->{'mod:l module toolchain versions in'}, undef, "report $id: C:T:PR 0.1.6 had a bug against cpanplus 0.89_06";
376     BEGIN {
377         $plan += 8;
378     }
379     my $id = 5928865;
380     my %Opt = (
381                'local' => 1,
382                'cachedir' => 't/var',
383                'quiet' => 1,
384                'dumpvars' => ".",
385                'report' => $id,
386               );
387     my $dumpvars = {};
388     my $extract = CPAN::Testers::ParseReport::parse_report
389           (
390            "t/var/nntp-testers/$id",
391            $dumpvars,
392            %Opt,
393           );
394     is $extract->{'mod:Catalyst::Plugin::Session::State::Cookie'}, "0.17", "report $id: C:P:S:S:C version";
395     is $extract->{'mod:Catalyst::Controller::ActionRole'}, "0.12", "report $id: C:C:AR mod version";
396     is $extract->{'prereq:Catalyst::Controller::ActionRole'}, "0.12", "report $id: C:C:AR prereq version";
397     is $extract->{'mod:Moose::Autobox'}, "0.10", "report $id: M:A mod version";
398     is $extract->{'prereq:Moose::Autobox'}, "0.09", "report $id: M:A prereq version";
399     is $extract->{'mod:CPANPLUS'}, '0.89_07', "report $id: CPANPLUS version";
400     is $extract->{'mod:Cwd'}, '3.30', "report $id: Cwd version";
401     is $extract->{'meta:date'}, '2009-11-08T14:48:26', "report $id: date";
405     BEGIN {
406         $plan += 1;
407     }
408     my $id = 2129076;
409     my %Opt = (
410                'local' => 1,
411                'cachedir' => 't/var',
412                'quiet' => 1,
413                'dumpvars' => ".",
414                'report' => $id,
415               );
416     my $dumpvars = {};
417     my $extract = CPAN::Testers::ParseReport::parse_report
418           (
419            "t/var/nntp-testers/$id",
420            $dumpvars,
421            %Opt,
422           );
423     is $extract->{'meta:date'}, '2008-09-02T18:05:00', "report $id: date";
427     BEGIN {
428         $plan += 1;
429     }
430     my $id = 34604012;
431     my %Opt = (
432                'local' => 1,
433                'cachedir' => 't/var',
434                'quiet' => 1,
435                'dumpvars' => ".",
436                'report' => $id,
437               );
438     my $dumpvars = {};
439     my $extract = CPAN::Testers::ParseReport::parse_report
440           (
441            "t/var/nntp-testers/$id",
442            $dumpvars,
443            %Opt,
444           );
445     is $extract->{'fail:t/20-content-types.t'}, 1;
449     BEGIN {
450         $plan += 2;
451     }
452     my $id = 6422067;
453     my %Opt = (
454                'local' => 1,
455                'cachedir' => 't/var',
456                'quiet' => 1,
457                'dumpvars' => ".",
458                'report' => $id,
459                'q' => ['qr:(Failed test\s+\S+.*)'],
460               );
461     my $dumpvars = {};
462     my $extract = CPAN::Testers::ParseReport::parse_report
463           (
464            "t/var/nntp-testers/$id",
465            $dumpvars,
466            %Opt,
467           );
468     is $extract->{'qr:(Failed test\s+\S+.*)'}, q{Failed test 'Pod coverage on App::Pm2Port'}, "report $id: qr...Failed test...";
469     is $extract->{'fail:t/pod-coverage.t'}, 1;
473     BEGIN {
474         $plan += 1;
475     }
476     my $id = 6115651;
477     my %Opt = (
478                'local' => 1,
479                'cachedir' => 't/var',
480                'quiet' => 1,
481                'dumpvars' => ".",
482                'report' => $id,
483               );
484     my $dumpvars = {};
485     my $extract = CPAN::Testers::ParseReport::parse_report
486           (
487            "t/var/nntp-testers/$id",
488            $dumpvars,
489            %Opt,
490           );
491     is $extract->{'meta:perl'}, q{5.11.2}, "report $id: meta:perl";
495     BEGIN {
496         $plan += 1;
497     }
498     my $id = 6525411;
499     my %Opt = (
500                'local' => 1,
501                'cachedir' => 't/var',
502                'quiet' => 1,
503                'dumpvars' => ".",
504                'report' => $id,
505               );
506     my $dumpvars = {};
507     my $extract = CPAN::Testers::ParseReport::parse_report
508           (
509            "t/var/nntp-testers/$id",
510            $dumpvars,
511            %Opt,
512           );
513     is $extract->{'mod:Image::Imlib2'}, q{0}, "report $id: mod:Image::Imlib2";
517     BEGIN {
518         $plan += 2;
519     }
520     my $id = 8327429;
521     my %Opt = (
522                'local' => 1,
523                'cachedir' => 't/var',
524                'quiet' => 1,
525                'dumpvars' => ".",
526                'report' => $id,
527               );
528     my $dumpvars = {};
529     my $extract = CPAN::Testers::ParseReport::parse_report
530           (
531            "t/var/nntp-testers/$id",
532            $dumpvars,
533            %Opt,
534           );
535     is $extract->{'prereq:Module::Build'}, q{0.36}, "report $id: prereq:Module::Build";
536     is $extract->{'mod:Module::Build'}, q{0.36_13}, "report $id: mod:Module::Build";
540     BEGIN {
541         $plan += 2;
542     }
543     my $id = 1678737;
544     my %Opt = (
545                'local' => 1,
546                'cachedir' => 't/var',
547                'quiet' => 1,
548                'dumpvars' => ".",
549                'report' => $id,
550               );
551     my $dumpvars = {};
552     my $extract = CPAN::Testers::ParseReport::parse_report
553           (
554            "t/var/nntp-testers/$id",
555            $dumpvars,
556            %Opt,
557           );
558     is $extract->{'env:$UID'}, q{1005}, "report $id: UID=1005";
559     is $extract->{'env:$GID∋1005'}, q{true}, "report $id: GID∋1005";
563     BEGIN {
564         $plan += 2;
565     }
566     my $id = 1425132;
567     my %Opt = (
568                'local' => 1,
569                'cachedir' => 't/var',
570                'quiet' => 1,
571                'dumpvars' => ".",
572                'report' => $id,
573               );
574     my $dumpvars = {};
575     my $extract = CPAN::Testers::ParseReport::parse_report
576           (
577            "t/var/nntp-testers/$id",
578            $dumpvars,
579            %Opt,
580           );
581     is $extract->{'env:$UID'}, q{1002}, "report $id: UID=1002";
582     is $extract->{'env:$GID∋100'}, q{true}, "report $id: GID∋100";
586     BEGIN {
587         $plan += 2;
588     }
589     my $id = 3521214;
590     my %Opt = (
591                'local' => 1,
592                'cachedir' => 't/var',
593                'quiet' => 1,
594                'dumpvars' => ".",
595                'report' => $id,
596               );
597     my $dumpvars = {};
598     my $extract = CPAN::Testers::ParseReport::parse_report
599           (
600            "t/var/nntp-testers/$id",
601            $dumpvars,
602            %Opt,
603           );
604     is $extract->{'env:$UID'}, q{502}, "report $id: UID=502";
605     is $extract->{'env:$GID∋502'}, q{true}, "report $id: GID∋502";
609     BEGIN {
610         $plan += 3;
611     }
612     my $id = 5834678;
613     my %Opt = (
614                'local' => 1,
615                'cachedir' => 't/var',
616                'quiet' => 1,
617                'dumpvars' => ".",
618                'report' => $id,
619               );
620     my $dumpvars = {};
621     my $extract = CPAN::Testers::ParseReport::parse_report
622           (
623            "t/var/nntp-testers/$id",
624            $dumpvars,
625            %Opt,
626           );
627     is $extract->{'env:$UID'}, q{1001}, "report $id: UID=1001";
628     is $extract->{'env:$GID∋1001'}, q{true}, "report $id: GID∋1001";
629     is $extract->{'env:$^X'}, q{/usr/home/cpan/pit/bare/perl-5.10.0/bin/perl}, "report $id: \$^X=/usr/home/cpan/pit/bare/perl-5.10.0/bin/perl";
633     BEGIN {
634         $plan += 2;
635     }
636     my $id = 16833358;
637     my %Opt = (
638                'local' => 1,
639                'cachedir' => 't/var',
640                'quiet' => 1,
641                'dumpvars' => ".",
642                'report' => $id,
643               );
644     my $dumpvars = {};
645     my $extract = CPAN::Testers::ParseReport::parse_report
646           (
647            "t/var/nntp-testers/$id",
648            $dumpvars,
649            %Opt,
650           );
651     is $extract->{'meta:perl'}, q{5.12.4}, "report $id: meta:perl";
652     is $extract->{'mod:CPANPLUS'}, q{0.9111}, "report $id: mod:CPANPLUS";
656     BEGIN {
657         $plan += 7;
658     }
659     my $id = 18548512;
660     my %Opt = (
661                'local' => 1,
662                'cachedir' => 't/var',
663                'quiet' => 1,
664                'dumpvars' => ".",
665                'report' => $id,
666               );
667     my $dumpvars = {};
668     $main::att=1;
669     my $extract = CPAN::Testers::ParseReport::parse_report
670           (
671            "t/var/nntp-testers/$id",
672            $dumpvars,
673            %Opt,
674           );
675     reportedvariableis $extract, $id, 'conf:usesocks', 'undef';
676     reportedvariableis $extract, $id, 'conf:use64bitall', 'define';
677     reportedvariableis $extract, $id, 'conf:use64bitint', 'define';
678     reportedvariableis $extract, $id, 'conf:useposix', 'true';
679     reportedvariableis $extract, $id, 'conf:usemymalloc', 'n';
680     reportedvariableis $extract, $id, 'conf:d_sfio', 'undef';
681     reportedvariableis $extract, $id, 'conf:bincompat5005', 'undef';
684 unlink "ctgetreports.out";
686 BEGIN {
687       plan tests => $plan;
690 __END__
692 # Local Variables:
693 # mode: cperl
694 # cperl-indent-level: 4
695 # End: