3 ##############################################################################
8 ##############################################################################
14 use English qw(-no_match_vars);
18 use Perl::Critic::PolicyFactory (-test => 1);
19 use Perl::Critic::Config;
20 use Perl::Critic::ProfilePrototype;
21 use Perl::Critic::Utils qw{ :characters :severities };
23 #-----------------------------------------------------------------------------
25 eval 'use Test::Deep'; ## no critic (
26 plan( skip_all => 'Test::Deep requried to test round-trip of default values')
29 #-----------------------------------------------------------------------------
31 my $default_configuration =
32 Perl::Critic::Config->new(
37 my @default_policies = $default_configuration->policies();
39 my $policy_test_count;
41 $policy_test_count = 4 * @default_policies;
42 foreach my $policy (@default_policies) {
44 $policy->parameter_metadata_available()
45 and not $policy->isa('Perl::Critic::Policy::CodeLayout::RequireTidyCode')
47 $policy_test_count += scalar @{$policy->get_parameters()};
50 my $test_count = 12 + $policy_test_count;
51 plan tests => $test_count;
53 #-----------------------------------------------------------------------------
55 my $profile_generator =
56 Perl::Critic::ProfilePrototype->new(
57 -policies => \@default_policies,
58 '-comment-out-parameters' => 0,
59 -config => $default_configuration,
61 my $profile = $profile_generator->to_string();
63 my $derived_configuration =
64 Perl::Critic::Config->new( -profile => \$profile );
66 #-----------------------------------------------------------------------------
68 my @derived_include = $derived_configuration->include();
69 my @default_include = $default_configuration->include();
76 #-----------------------------------------------------------------------------
78 my @derived_exclude = $derived_configuration->exclude();
79 my @default_exclude = $default_configuration->exclude();
86 #-----------------------------------------------------------------------------
88 my @derived_single_policy = $derived_configuration->single_policy();
89 my @default_single_policy = $default_configuration->single_policy();
91 \@derived_single_policy,
92 \@default_single_policy,
96 #-----------------------------------------------------------------------------
99 $derived_configuration->force(),
100 $default_configuration->force(),
104 #-----------------------------------------------------------------------------
107 $derived_configuration->only(),
108 $default_configuration->only(),
112 #-----------------------------------------------------------------------------
115 $derived_configuration->profile_strictness(),
116 $default_configuration->profile_strictness(),
120 #-----------------------------------------------------------------------------
123 $derived_configuration->color(),
124 $default_configuration->color(),
128 #-----------------------------------------------------------------------------
131 $derived_configuration->severity(),
133 $default_configuration->severity(),
137 #-----------------------------------------------------------------------------
140 $derived_configuration->top(),
142 $default_configuration->top(),
146 #-----------------------------------------------------------------------------
149 $derived_configuration->verbose(),
151 $default_configuration->verbose(),
155 #-----------------------------------------------------------------------------
158 $derived_configuration->theme(),
159 $default_configuration->theme(),
163 #-----------------------------------------------------------------------------
165 my @derived_policies = $derived_configuration->policies();
167 my $policy_counts_match =
169 scalar @derived_policies,
170 scalar @default_policies,
176 q{because there weren't the same number of policies},
178 if not $policy_counts_match;
180 for (my $x = 0; $x < @default_policies; $x++) {
181 my $derived_policy = $derived_policies[$x];
182 my $default_policy = $default_policies[$x];
185 $derived_policy->get_short_name(),
186 $default_policy->get_short_name(),
187 'policy names match',
190 $derived_policy->get_maximum_violations_per_document(),
191 $default_policy->get_maximum_violations_per_document(),
192 $default_policy->get_short_name() . ' maximum violations per document match',
195 $derived_policy->get_severity(),
196 $default_policy->get_severity(),
197 $default_policy->get_short_name() . ' severities match',
200 $derived_policy->get_themes(),
201 $default_policy->get_themes(),
202 $default_policy->get_short_name() . ' themes match',
206 $default_policy->parameter_metadata_available()
207 and not $default_policy->isa('Perl::Critic::Policy::CodeLayout::RequireTidyCode')
209 # Encapsulation violation alert!
210 foreach my $parameter ( @{$default_policy->get_parameters()} ) {
212 $default_policy->__get_parameter_name( $parameter );
215 $derived_policy->{$parameter_name},
216 $default_policy->{$parameter_name},
217 $default_policy->get_short_name()
228 #-----------------------------------------------------------------------------
231 # cperl-indent-level: 4
233 # indent-tabs-mode: nil
234 # c-indentation-style: bsd
236 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :