Build all packages removed dependencies of libtest-exception-perl libtest-warn-perl...
[dh-make-perl] / dev / i386 / libperl-critic-perl / libperl-critic-perl-1.088 / xt / author / 80_policysummary.t
1 #!perl
2
3 ##############################################################################
4 #      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/xt/author/80_policysummary.t $
5 #     $Date: 2008-04-20 22:15:46 -0700 (Sun, 20 Apr 2008) $
6 #   $Author: clonezone $
7 # $Revision: 2277 $
8 ##############################################################################
9
10 use strict;
11 use warnings;
12
13 use English qw< -no_match_vars >;
14
15 use File::Spec;
16 use List::MoreUtils qw(any);
17
18 use Perl::Critic::PolicyFactory ( -test => 1 );
19 use Perl::Critic::TestUtils qw{ bundled_policy_names };
20
21 use Test::More;
22
23 #-----------------------------------------------------------------------------
24
25 my $summary_file =
26     File::Spec->catfile( qw< lib Perl Critic PolicySummary.pod > );
27 if (open my ($fh), '<', $summary_file) {
28
29     my $content = do {local $/=undef; <$fh> };
30     close $fh;
31
32     my @policy_names = bundled_policy_names();
33     my @summaries    = $content =~ m/^=head2 [ ]+ L<([\w:]+)>/gxms;
34     plan( tests => 2 + 2 * @policy_names );
35
36     my %num_summaries;
37     for my $summary (@summaries) {
38         ++$num_summaries{$summary};
39     }
40     if (!ok(@summaries == keys %num_summaries, 'right number of summaries')) {
41         for my $policy_name (sort keys %num_summaries) {
42             next if 1 == $num_summaries{$policy_name};
43             diag('Duplicate summary for ' . $policy_name);
44         }
45     }
46
47     my $profile = Perl::Critic::UserProfile->new();
48     my $factory = Perl::Critic::PolicyFactory->new( -profile => $profile );
49     my %found_policies = map { ref $_ => $_ } $factory->create_all_policies();
50
51     my %descriptions = $content =~ m/^=head2 [ ]+ L<([\w:]+)>\n\n([^\n]+)/gxms;
52     for my $policy_name (keys %descriptions) {
53         $descriptions{$policy_name} =~ s/[ ] \[Severity [ ] (\d+)\]//xms;
54         my $severity = $1;
55         $descriptions{$policy_name} = {
56                                        desc => $descriptions{$policy_name},
57                                        severity => $severity,
58                                       };
59     }
60
61     for my $policy_name ( @policy_names ) {
62         my $label = qq{PolicySummary.pod has "$policy_name"};
63         my $has_summary = delete $num_summaries{$policy_name};
64         is( $has_summary, 1, $label );
65
66         my $summary_severity = $descriptions{$policy_name}->{severity};
67         my $real_severity = $found_policies{$policy_name} &&
68           $found_policies{$policy_name}->default_severity;
69         is( $summary_severity, $real_severity, "severity for $policy_name" );
70     }
71
72     if (!ok(0 == keys %num_summaries, 'no extra summaries')) {
73         for my $policy_name (sort keys %num_summaries) {
74             diag('Extraneous summary for ' . $policy_name);
75         }
76     }
77 }
78 else {
79     plan 'no_plan';
80     fail qq<Cannot open "$summary_file": $ERRNO>;
81 }
82
83 #-----------------------------------------------------------------------------
84
85 # ensure we run true if this test is loaded by
86 # t/80_policysummary.t.without_optional_dependencies.t
87 1;
88
89 # Local Variables:
90 #   mode: cperl
91 #   cperl-indent-level: 4
92 #   fill-column: 78
93 #   indent-tabs-mode: nil
94 #   c-indentation-style: bsd
95 # End:
96 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :