dpkg (1.18.25) stretch; urgency=medium
[dpkg] / t / critic.t
CommitLineData
1479465f
GJ
1#!/usr/bin/perl
2#
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <https://www.gnu.org/licenses/>.
15
16use strict;
17use warnings;
18
19use Test::More;
20use Test::Dpkg qw(:needs);
21
22test_needs_author();
23test_needs_module('Test::Perl::Critic');
24test_needs_srcdir_switch();
25
26my @policies = qw(
27 BuiltinFunctions::ProhibitBooleanGrep
28 BuiltinFunctions::ProhibitLvalueSubstr
29 BuiltinFunctions::ProhibitReverseSortBlock
30 BuiltinFunctions::ProhibitSleepViaSelect
31 BuiltinFunctions::ProhibitStringySplit
32 BuiltinFunctions::ProhibitUniversalCan
33 BuiltinFunctions::ProhibitUniversalIsa
34 BuiltinFunctions::ProhibitUselessTopic
35 BuiltinFunctions::ProhibitVoidGrep
36 BuiltinFunctions::ProhibitVoidMap
37 BuiltinFunctions::RequireBlockGrep
38 BuiltinFunctions::RequireBlockMap
39 BuiltinFunctions::RequireGlobFunction
40 BuiltinFunctions::RequireSimpleSortBlock
41 ClassHierarchies::ProhibitAutoloading
42 ClassHierarchies::ProhibitExplicitISA
43 ClassHierarchies::ProhibitOneArgBless
44 CodeLayout::ProhibitHardTabs
45 CodeLayout::ProhibitQuotedWordLists
46 CodeLayout::ProhibitTrailingWhitespace
47 CodeLayout::RequireConsistentNewlines
48 ControlStructures::ProhibitCStyleForLoops
49 ControlStructures::ProhibitLabelsWithSpecialBlockNames
50 ControlStructures::ProhibitMutatingListFunctions
51 ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
52 ControlStructures::ProhibitUntilBlocks
53 Documentation::RequirePackageMatchesPodName
54 InputOutput::ProhibitBarewordFileHandles
55 InputOutput::ProhibitInteractiveTest
56 InputOutput::ProhibitJoinedReadline
57 InputOutput::ProhibitOneArgSelect
58 InputOutput::ProhibitReadlineInForLoop
59 InputOutput::ProhibitTwoArgOpen
60 InputOutput::RequireBracedFileHandleWithPrint
61 InputOutput::RequireCheckedOpen
62 InputOutput::RequireEncodingWithUTF8Layer
63 Miscellanea::ProhibitFormats
64 Miscellanea::ProhibitUnrestrictedNoCritic
65 Miscellanea::ProhibitUselessNoCritic
66 Modules::ProhibitConditionalUseStatements
67 Modules::ProhibitEvilModules
68 Modules::RequireBarewordIncludes
69 Modules::RequireEndWithOne
70 Modules::RequireExplicitPackage
71 Modules::RequireFilenameMatchesPackage
72 NamingConventions::Capitalization
73 Objects::ProhibitIndirectSyntax
74 RegularExpressions::ProhibitSingleCharAlternation
75 RegularExpressions::ProhibitUnusedCapture
76 RegularExpressions::ProhibitUnusualDelimiters
77 RegularExpressions::ProhibitUselessTopic
78 RegularExpressions::RequireBracesForMultiline
79 RegularExpressions::RequireExtendedFormatting
80 Subroutines::ProhibitExplicitReturnUndef
81 Subroutines::ProhibitNestedSubs
82 Subroutines::ProhibitReturnSort
83 Subroutines::ProhibitUnusedPrivateSubroutines
84 Subroutines::ProtectPrivateSubs
85 TestingAndDebugging::ProhibitNoStrict
86 TestingAndDebugging::ProhibitNoWarnings
87 TestingAndDebugging::RequireTestLabels
88 TestingAndDebugging::RequireUseStrict
89 TestingAndDebugging::RequireUseWarnings
90 ValuesAndExpressions::ProhibitCommaSeparatedStatements
91 ValuesAndExpressions::ProhibitComplexVersion
92 ValuesAndExpressions::ProhibitInterpolationOfLiterals
93 ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
94 ValuesAndExpressions::ProhibitMismatchedOperators
95 ValuesAndExpressions::ProhibitMixedBooleanOperators
96 ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
97 ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
98 ValuesAndExpressions::ProhibitVersionStrings
99 ValuesAndExpressions::RequireConstantVersion
100 ValuesAndExpressions::RequireQuotedHeredocTerminator
101 ValuesAndExpressions::RequireUpperCaseHeredocTerminator
102 Variables::ProhibitAugmentedAssignmentInDeclaration
103 Variables::ProhibitConditionalDeclarations
104 Variables::ProhibitLocalVars
105 Variables::ProhibitMatchVars
106 Variables::ProhibitPackageVars
107 Variables::ProhibitPerl4PackageNames
108 Variables::ProhibitUnusedVariables
109 Variables::ProtectPrivateVars
110 Variables::RequireLexicalLoopIterators
111 Variables::RequireNegativeIndices
112);
113
114Test::Perl::Critic->import(
115 -profile => 't/critic/perlcriticrc',
116 -verbose => 8,
117 -include => \@policies,
118 -only => 1,
119);
120
121my @files = Test::Dpkg::all_perl_files();
122
123plan tests => scalar @files;
124
125for my $file (@files) {
126 critic_ok($file);
127}