Modified source files and compiled any and armel versions of packages
[pkg-perl] / deb-src / libperl-critic-perl / libperl-critic-perl-1.088 / t / 00_modules.t
1 #!perl
2
3 ##############################################################################
4 #      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/00_modules.t $
5 #     $Date: 2008-07-03 10:19:10 -0500 (Thu, 03 Jul 2008) $
6 #   $Author: clonezone $
7 # $Revision: 2489 $
8 ##############################################################################
9
10 use 5.006001;
11 use strict;
12 use warnings;
13
14 use English qw(-no_match_vars);
15
16 use PPI::Document;
17
18 use Perl::Critic::TestUtils qw(bundled_policy_names);
19
20 use Test::More;
21
22 #-----------------------------------------------------------------------------
23
24 our $VERSION = '1.088';
25
26 #-----------------------------------------------------------------------------
27
28 Perl::Critic::TestUtils::block_perlcriticrc();
29
30 my @bundled_policy_names = bundled_policy_names();
31
32 my @concrete_exceptions = qw{
33     AggregateConfiguration
34     Configuration::Generic
35     Configuration::Option::Global::ExtraParameter
36     Configuration::Option::Global::ParameterValue
37     Configuration::Option::Policy::ExtraParameter
38     Configuration::Option::Policy::ParameterValue
39     Fatal::Generic
40     Fatal::Internal
41     Fatal::PolicyDefinition
42     IO
43 };
44
45 plan tests =>
46         108
47     +   (  9 * scalar @concrete_exceptions  )
48     +   ( 14 * scalar @bundled_policy_names );
49
50 # pre-compute for version comparisons
51 my $version_string = __PACKAGE__->VERSION;
52
53 #-----------------------------------------------------------------------------
54 # Test Perl::Critic module interface
55
56 use_ok('Perl::Critic') or BAIL_OUT(q<Can't continue.>);
57 can_ok('Perl::Critic', 'new');
58 can_ok('Perl::Critic', 'add_policy');
59 can_ok('Perl::Critic', 'config');
60 can_ok('Perl::Critic', 'critique');
61 can_ok('Perl::Critic', 'policies');
62
63 #Set -profile to avoid messing with .perlcriticrc
64 my $critic = Perl::Critic->new( -profile => 'NONE' );
65 isa_ok($critic, 'Perl::Critic');
66 is($critic->VERSION(), $version_string, 'Perl::Critic version');
67
68 #-----------------------------------------------------------------------------
69 # Test Perl::Critic::Config module interface
70
71 use_ok('Perl::Critic::Config') or BAIL_OUT(q<Can't continue.>);
72 can_ok('Perl::Critic::Config', 'new');
73 can_ok('Perl::Critic::Config', 'add_policy');
74 can_ok('Perl::Critic::Config', 'policies');
75 can_ok('Perl::Critic::Config', 'exclude');
76 can_ok('Perl::Critic::Config', 'force');
77 can_ok('Perl::Critic::Config', 'include');
78 can_ok('Perl::Critic::Config', 'only');
79 can_ok('Perl::Critic::Config', 'profile_strictness');
80 can_ok('Perl::Critic::Config', 'severity');
81 can_ok('Perl::Critic::Config', 'single_policy');
82 can_ok('Perl::Critic::Config', 'theme');
83 can_ok('Perl::Critic::Config', 'top');
84 can_ok('Perl::Critic::Config', 'verbose');
85 can_ok('Perl::Critic::Config', 'color');
86 can_ok('Perl::Critic::Config', 'criticism_fatal');
87 can_ok('Perl::Critic::Config', 'site_policy_names');
88
89 #Set -profile to avoid messing with .perlcriticrc
90 my $config = Perl::Critic::Config->new( -profile => 'NONE');
91 isa_ok($config, 'Perl::Critic::Config');
92 is($config->VERSION(), $version_string, 'Perl::Critic::Config version');
93
94 #-----------------------------------------------------------------------------
95 # Test Perl::Critic::Config::OptionsProcessor module interface
96
97 use_ok('Perl::Critic::OptionsProcessor') or BAIL_OUT(q<Can't continue.>);
98 can_ok('Perl::Critic::OptionsProcessor', 'new');
99 can_ok('Perl::Critic::OptionsProcessor', 'exclude');
100 can_ok('Perl::Critic::OptionsProcessor', 'include');
101 can_ok('Perl::Critic::OptionsProcessor', 'force');
102 can_ok('Perl::Critic::OptionsProcessor', 'only');
103 can_ok('Perl::Critic::OptionsProcessor', 'profile_strictness');
104 can_ok('Perl::Critic::OptionsProcessor', 'single_policy');
105 can_ok('Perl::Critic::OptionsProcessor', 'severity');
106 can_ok('Perl::Critic::OptionsProcessor', 'theme');
107 can_ok('Perl::Critic::OptionsProcessor', 'top');
108 can_ok('Perl::Critic::OptionsProcessor', 'verbose');
109 can_ok('Perl::Critic::OptionsProcessor', 'color');
110 can_ok('Perl::Critic::OptionsProcessor', 'criticism_fatal');
111
112 my $processor = Perl::Critic::OptionsProcessor->new();
113 isa_ok($processor, 'Perl::Critic::OptionsProcessor');
114 is($processor->VERSION(), $version_string, 'Perl::Critic::OptionsProcessor version');
115
116 #-----------------------------------------------------------------------------
117 # Test Perl::Critic::Policy module interface
118
119 use_ok('Perl::Critic::Policy') or BAIL_OUT(q<Can't continue.>);
120 can_ok('Perl::Critic::Policy', 'add_themes');
121 can_ok('Perl::Critic::Policy', 'applies_to');
122 can_ok('Perl::Critic::Policy', 'default_severity');
123 can_ok('Perl::Critic::Policy', 'default_themes');
124 can_ok('Perl::Critic::Policy', 'get_severity');
125 can_ok('Perl::Critic::Policy', 'get_themes');
126 can_ok('Perl::Critic::Policy', 'new');
127 can_ok('Perl::Critic::Policy', 'set_severity');
128 can_ok('Perl::Critic::Policy', 'set_themes');
129 can_ok('Perl::Critic::Policy', 'violates');
130 can_ok('Perl::Critic::Policy', 'violation');
131
132
133 my $policy = Perl::Critic::Policy->new();
134 isa_ok($policy, 'Perl::Critic::Policy');
135 is($policy->VERSION(), $version_string, 'Perl::Critic::Policy version');
136
137 #-----------------------------------------------------------------------------
138 # Test Perl::Critic::Violation module interface
139
140 use_ok('Perl::Critic::Violation') or BAIL_OUT(q<Can't continue.>);
141 can_ok('Perl::Critic::Violation', 'description');
142 can_ok('Perl::Critic::Violation', 'diagnostics');
143 can_ok('Perl::Critic::Violation', 'explanation');
144 can_ok('Perl::Critic::Violation', 'get_format');
145 can_ok('Perl::Critic::Violation', 'location');
146 can_ok('Perl::Critic::Violation', 'new');
147 can_ok('Perl::Critic::Violation', 'policy');
148 can_ok('Perl::Critic::Violation', 'set_format');
149 can_ok('Perl::Critic::Violation', 'severity');
150 can_ok('Perl::Critic::Violation', 'sort_by_location');
151 can_ok('Perl::Critic::Violation', 'sort_by_severity');
152 can_ok('Perl::Critic::Violation', 'source');
153 can_ok('Perl::Critic::Violation', 'to_string');
154
155 my $code = q{print 'Hello World';};
156 my $doc = PPI::Document->new(\$code);
157 my $viol = Perl::Critic::Violation->new(undef, undef, $doc, undef);
158 isa_ok($viol, 'Perl::Critic::Violation');
159 is($viol->VERSION(), $version_string, 'Perl::Critic::Violation version');
160
161 #-----------------------------------------------------------------------------
162 # Test Perl::Critic::UserProfile module interface
163
164 use_ok('Perl::Critic::UserProfile') or BAIL_OUT(q<Can't continue.>);
165 can_ok('Perl::Critic::UserProfile', 'options_processor');
166 can_ok('Perl::Critic::UserProfile', 'new');
167 can_ok('Perl::Critic::UserProfile', 'policy_is_disabled');
168 can_ok('Perl::Critic::UserProfile', 'policy_is_enabled');
169
170 my $up = Perl::Critic::UserProfile->new();
171 isa_ok($up, 'Perl::Critic::UserProfile');
172 is($up->VERSION(), $version_string, 'Perl::Critic::UserProfile version');
173
174 #-----------------------------------------------------------------------------
175 # Test Perl::Critic::PolicyFactory module interface
176
177 use_ok('Perl::Critic::PolicyFactory') or BAIL_OUT(q<Can't continue.>);
178 can_ok('Perl::Critic::PolicyFactory', 'create_policy');
179 can_ok('Perl::Critic::PolicyFactory', 'new');
180 can_ok('Perl::Critic::PolicyFactory', 'site_policy_names');
181
182
183 my $profile = Perl::Critic::UserProfile->new();
184 my $factory = Perl::Critic::PolicyFactory->new( -profile => $profile );
185 isa_ok($factory, 'Perl::Critic::PolicyFactory');
186 is($factory->VERSION(), $version_string, 'Perl::Critic::PolicyFactory version');
187
188 #-----------------------------------------------------------------------------
189 # Test Perl::Critic::Theme module interface
190
191 use_ok('Perl::Critic::Theme') or BAIL_OUT(q<Can't continue.>);
192 can_ok('Perl::Critic::Theme', 'new');
193 can_ok('Perl::Critic::Theme', 'rule');
194 can_ok('Perl::Critic::Theme', 'policy_is_thematic');
195
196
197 my $theme = Perl::Critic::Theme->new( -rule => 'foo' );
198 isa_ok($theme, 'Perl::Critic::Theme');
199 is($theme->VERSION(), $version_string, 'Perl::Critic::Theme version');
200
201 #-----------------------------------------------------------------------------
202 # Test Perl::Critic::PolicyListing module interface
203
204 use_ok('Perl::Critic::PolicyListing') or BAIL_OUT(q<Can't continue.>);
205 can_ok('Perl::Critic::PolicyListing', 'new');
206 can_ok('Perl::Critic::PolicyListing', 'to_string');
207
208 my $listing = Perl::Critic::PolicyListing->new();
209 isa_ok($listing, 'Perl::Critic::PolicyListing');
210 is($listing->VERSION(), $version_string, 'Perl::Critic::PolicyListing version');
211
212 #-----------------------------------------------------------------------------
213 # Test Perl::Critic::ProfilePrototype module interface
214
215 use_ok('Perl::Critic::ProfilePrototype') or BAIL_OUT(q<Can't continue.>);
216 can_ok('Perl::Critic::ProfilePrototype', 'new');
217 can_ok('Perl::Critic::ProfilePrototype', 'to_string');
218
219 my $prototype = Perl::Critic::ProfilePrototype->new();
220 isa_ok($prototype, 'Perl::Critic::ProfilePrototype');
221 is($prototype->VERSION(), $version_string, 'Perl::Critic::ProfilePrototype version');
222
223 #-----------------------------------------------------------------------------
224 # Test module interface for exceptions
225
226 {
227     foreach my $class (
228         map { "Perl::Critic::Exception::$_" } @concrete_exceptions
229     ) {
230         use_ok($class) or BAIL_OUT(q<Can't continue.>);
231         can_ok($class, 'new');
232         can_ok($class, 'throw');
233         can_ok($class, 'message');
234         can_ok($class, 'error');
235         can_ok($class, 'full_message');
236         can_ok($class, 'as_string');
237
238         my $exception = $class->new();
239         isa_ok($exception, $class);
240         is($exception->VERSION(), $version_string, "$class version");
241     }
242 }
243
244 #-----------------------------------------------------------------------------
245 # Test module interface for each Policy subclass
246
247 {
248     for my $mod ( @bundled_policy_names ) {
249
250         use_ok($mod) or BAIL_OUT(q<Can't continue.>);
251         can_ok($mod, 'applies_to');
252         can_ok($mod, 'default_severity');
253         can_ok($mod, 'default_themes');
254         can_ok($mod, 'get_severity');
255         can_ok($mod, 'get_themes');
256         can_ok($mod, 'new');
257         can_ok($mod, 'set_severity');
258         can_ok($mod, 'set_themes');
259         can_ok($mod, 'set_themes');
260         can_ok($mod, 'violates');
261         can_ok($mod, 'violation');
262
263         my $policy = $mod->new();
264         isa_ok($policy, 'Perl::Critic::Policy');
265         is($policy->VERSION(), $version_string, "Version of $mod");
266     }
267 }
268
269 #-----------------------------------------------------------------------------
270 # Test functional interface to Perl::Critic
271
272 Perl::Critic->import( qw(critique) );
273 can_ok('main', 'critique');  #Export test
274
275 # TODO: These tests are weak. They just verify that it doesn't
276 # blow up, and that at least one violation is returned.
277 ok( critique( \$code ), 'Functional style, no config' );
278 ok( critique( {}, \$code ), 'Functional style, empty config' );
279 ok( critique( {severity => 1}, \$code ), 'Functional style, with config');
280 ok( !critique(), 'Functional style, no args at all');
281 ok( !critique(undef, undef), 'Functional style, undef args');
282
283 #-----------------------------------------------------------------------------
284
285 # ensure we run true if this test is loaded by
286 # t/00_modules.t_without_optional_dependencies.t
287 1;
288
289 # Local Variables:
290 #   mode: cperl
291 #   cperl-indent-level: 4
292 #   fill-column: 78
293 #   indent-tabs-mode: nil
294 #   c-indentation-style: bsd
295 # End:
296 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :