| 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 | |
| 16 | use strict; |
| 17 | use warnings; |
| 18 | |
| 19 | use Test::More; |
| 20 | use Test::Dpkg qw(:needs); |
| 21 | |
| 22 | test_needs_author(); |
| 23 | test_needs_module('Test::Perl::Critic'); |
| 24 | test_needs_srcdir_switch(); |
| 25 | |
| 26 | my @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 | |
| 114 | Test::Perl::Critic->import( |
| 115 | -profile => 't/critic/perlcriticrc', |
| 116 | -verbose => 8, |
| 117 | -include => \@policies, |
| 118 | -only => 1, |
| 119 | ); |
| 120 | |
| 121 | my @files = Test::Dpkg::all_perl_files(); |
| 122 | |
| 123 | plan tests => scalar @files; |
| 124 | |
| 125 | for my $file (@files) { |
| 126 | critic_ok($file); |
| 127 | } |