Login
f6aded12231a07e75bff2e7049c5901c43c374d6
[gknop/Perl-Critic.git] / t / 99_pod_coverage.t
1 #!perl
2
3 ##############################################################################
4 #     $URL$
5 #    $Date$
6 #   $Author$
7 # $Revision$
8 ##############################################################################
9
10 use 5.006001;
11 use strict;
12 use warnings;
13
14 use Test::More;
15
16 #-----------------------------------------------------------------------------
17
18 our $VERSION = '1.088';
19
20 #-----------------------------------------------------------------------------
21
22 eval 'use Test::Pod::Coverage 1.04'; ## no critic
23 plan skip_all => 'Test::Pod::Coverage 1.00 requried to test POD' if $@;
24
25 {
26     # HACK: Perl::Critic::Violation uses Pod::Parser to extract the
27     # DIAGNOSTIC section of the POD in each Policy module.  This
28     # happens when the Policy first C<uses> the Violation module.
29     # Meanwhile, Pod::Coverage also uses Pod::Parser to extract the
30     # POD and compare it with the subroutines that are in the symbol
31     # table for that module.  For reasons I cannot yet explain, using
32     # Pod::Parser twice this way causes the symbol table to get very
33     # wacky and this test script dies with "Can't call method 'OPEN'
34     # on IO::String at line 1239 of Pod/Parser.pm".
35
36     # For now, my workaround is to temporarily redefine the import()
37     # method in the Violation module so that it doesn't do any Pod
38     # parsing.  I'll look for a better solution (or file a bug report)
39     # when / if I have better understanding of the problem.
40
41     no warnings qw<redefine once>; ## no critic (ProhibitNoWarnings)
42     require Perl::Critic::Violation;
43     *Perl::Critic::Violation::import = sub { 1 };
44 }
45
46 my @trusted_methods  = get_trusted_methods();
47 my $method_string = join ' | ', @trusted_methods;
48 my $trusted_rx = qr{ \A (?: $method_string ) \z }x;
49 all_pod_coverage_ok( {trustme => [$trusted_rx]} );
50
51 #-----------------------------------------------------------------------------
52
53 sub get_trusted_methods {
54     return qw(
55         new
56         initialize_if_enabled
57         violates
58         applies_to
59         default_themes
60         default_maximum_violations_per_document
61         default_severity
62         supported_parameters
63         description
64         Fields
65         got_sigpipe
66     );
67 }
68
69 ##############################################################################
70 # Local Variables:
71 #   mode: cperl
72 #   cperl-indent-level: 4
73 #   fill-column: 78
74 #   indent-tabs-mode: nil
75 #   c-indentation-style: bsd
76 # End:
77 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :