]> git.imager.perl.org - imager.git/blob - t/t93podcover.t
try to generate all coverage into the one cover_db
[imager.git] / t / t93podcover.t
1 #!perl -w
2 use strict;
3 use lib 't';
4 use Test::More;
5 use ExtUtils::Manifest qw(maniread);
6 eval "use Test::Pod::Coverage 1.08;";
7 # 1.08 required for coverage_class support
8 plan skip_all => "Test::Pod::Coverage 1.08 required for POD coverage" if $@;
9
10 # scan for a list of files to get Imager method documentation from
11 my $manifest = maniread();
12 my @pods = ( 'Imager.pm', grep /\.pod$/, keys %$manifest );
13
14 my @private = 
15   ( 
16    '^io?_',
17    '^DSO_',
18    '^Inline$',
19    '^yatf$',
20    '^m_init_log$',
21    '^malloc_state$',
22    '^init_log$',
23    '^polybezier$', # not ready for public consumption
24    '^border$', # I don't know what it is, expect it to go away
25   );
26 my @trustme = ( '^open$',  );
27
28 plan tests => 19;
29
30 {
31   pod_coverage_ok('Imager', { also_private => \@private,
32                               pod_from => \@pods,
33                               trustme => \@trustme,
34                               coverage_class => 'Pod::Coverage::Imager' });
35   pod_coverage_ok('Imager::Font');
36   my @color_private = ( '^i_', '_internal$' );
37   pod_coverage_ok('Imager::Color', 
38                   { also_private => \@color_private });
39   pod_coverage_ok('Imager::Color::Float', 
40                   { also_private => \@color_private });
41   pod_coverage_ok('Imager::Color::Table');
42   pod_coverage_ok('Imager::ExtUtils');
43   pod_coverage_ok('Imager::Expr');
44   my $trust_parents = { coverage_class => 'Pod::Coverage::CountParents' };
45   pod_coverage_ok('Imager::Expr::Assem', $trust_parents);
46   pod_coverage_ok('Imager::Fill');
47   pod_coverage_ok('Imager::Font::BBox');
48   pod_coverage_ok('Imager::Font::Wrap');
49   pod_coverage_ok('Imager::Fountain');
50   pod_coverage_ok('Imager::Matrix2d');
51   pod_coverage_ok('Imager::Regops');
52   pod_coverage_ok('Imager::Transform');
53   pod_coverage_ok('Imager::Test');
54 }
55
56 {
57   # check all documented methods/functions are in the method index
58   my $coverage = 
59     Pod::Coverage::Imager->new(package => 'Imager',
60                                pod_from => \@pods,
61                                trustme => \@trustme,
62                                also_private => \@private);
63   my %methods = map { $_ => 1 } $coverage->covered;
64   open IMAGER, "< Imager.pm"
65     or die "Cannot open Imager.pm: $!";
66   while (<IMAGER>) {
67     last if /^=head1 METHOD INDEX/;
68   }
69   my @indexed;
70   my @unknown_indexed;
71   while (<IMAGER>) {
72     last if /^=\w/ && !/^=for\b/;
73
74     if (/^(\w+)\(/) {
75       push @indexed, $1;
76       unless (delete $methods{$1}) {
77         push @unknown_indexed, $1;
78       }
79     }
80   }
81
82   unless (is(keys %methods, 0, "all methods in method index")) {
83     print "# the following methods are documented but not in the index:\n";
84     print "#  $_\n" for sort keys %methods;
85   }
86   unless (is(@unknown_indexed, 0, "only methods in method index")) {
87     print "# the following names are in the method index but not documented\n";
88     print "#  $_\n" for sort @unknown_indexed;
89   }
90
91   sub dict_cmp_func;
92   is_deeply(\@indexed, [ sort dict_cmp_func @indexed ],
93             "check method index is alphabetically sorted");
94 }
95
96 sub dict_cmp_func {
97   (my $tmp_a = lc $a) =~ tr/_//d;
98   (my $tmp_b = lc $b) =~ tr/_//d;
99
100   $tmp_a cmp $tmp_b;
101 }