Login
10d815d43f3599bcfe6a6b0fabae415856b86de0
[gknop/Perl-Critic.git] / xt / author / 40_criticize-code.t
1 #!perl
2
3 ##############################################################################
4 #      $URL$
5 #     $Date$
6 #   $Author$
7 # $Revision$
8 ##############################################################################
9
10 # Self-compliance tests
11
12 use strict;
13 use warnings;
14
15 use English qw( -no_match_vars );
16
17 use File::Spec qw();
18
19 use Perl::Critic::Utils qw{ :characters };
20 use Perl::Critic::TestUtils qw{ starting_points_including_examples };
21
22 # Note: "use PolicyFactory" *must* appear after "use TestUtils" for the
23 # -extra-test-policies option to work.
24 use Perl::Critic::PolicyFactory (
25     '-test' => 1,
26     '-extra-test-policies' => [ qw{ ErrorHandling::RequireUseOfExceptions } ],
27 );
28
29 use Test::More;
30
31 #-----------------------------------------------------------------------------
32
33 our $VERSION = '1.116';
34
35 #-----------------------------------------------------------------------------
36
37 use Test::Perl::Critic;
38
39 #-----------------------------------------------------------------------------
40
41 # Fall over if P::C::More isn't installed.
42 use Perl::Critic::Policy::ErrorHandling::RequireUseOfExceptions;
43
44 #-----------------------------------------------------------------------------
45 # Set up PPI caching for speed (used primarily during development)
46
47 if ( $ENV{PERL_CRITIC_CACHE} ) {
48     require PPI::Cache;
49     my $cache_path =
50         File::Spec->catdir(
51             File::Spec->tmpdir,
52             "test-perl-critic-cache-$ENV{USER}",
53         );
54     if ( ! -d $cache_path) {
55         mkdir $cache_path, oct 700;
56     }
57     PPI::Cache->import( path => $cache_path );
58 }
59
60 #-----------------------------------------------------------------------------
61 # Strict object testing -- prevent direct hash key access
62
63 use Devel::EnforceEncapsulation;
64 foreach my $pkg ( $EMPTY, qw< ::Config ::Policy ::Violation> ) {
65     Devel::EnforceEncapsulation->apply_to('Perl::Critic'.$pkg);
66 }
67
68 #-----------------------------------------------------------------------------
69 # Run critic against all of our own files
70
71 my $rcfile = File::Spec->catfile( 'xt', 'author', '40_perlcriticrc-code' );
72 Test::Perl::Critic->import( -profile => $rcfile );
73
74 all_critic_ok( starting_points_including_examples() );
75
76 #-----------------------------------------------------------------------------
77
78 # Local Variables:
79 #   mode: cperl
80 #   cperl-indent-level: 4
81 #   fill-column: 78
82 #   indent-tabs-mode: nil
83 #   c-indentation-style: bsd
84 # End:
85 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :