From 896cfdd35e5946867a198b882a1edd7cbd2cfbfe Mon Sep 17 00:00:00 2001 From: Marius Gavrilescu Date: Sat, 7 Nov 2015 17:43:19 +0000 Subject: [PATCH] Add perlcritic test and make code comply --- MANIFEST | 2 ++ lib/App/Statsbot.pm | 8 ++++---- t/perlcritic.t | 10 ++++++++++ t/perlcriticrc | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 t/perlcritic.t create mode 100644 t/perlcriticrc diff --git a/MANIFEST b/MANIFEST index f99e185..c42a07f 100644 --- a/MANIFEST +++ b/MANIFEST @@ -3,5 +3,7 @@ Makefile.PL MANIFEST README t/App-Statsbot.t +t/perlcritic.t +t/perlcriticrc lib/App/Statsbot.pm statsbot diff --git a/lib/App/Statsbot.pm b/lib/App/Statsbot.pm index 5c0ab08..8db29f0 100644 --- a/lib/App/Statsbot.pm +++ b/lib/App/Statsbot.pm @@ -127,10 +127,10 @@ sub on_public{ my ($targets,$message)=@_[ARG1,ARG2]; my $botnick = _nick_name; - if ($message =~ /(?:$botnick[:,])?\s*!?help\s*(.*)/) { - _yield(privmsg => $targets, "Try !presence username interval [truncate]"); - _yield(privmsg => $targets, "For example, !presence mgv '2 days'"); - _yield(privmsg => $targets, "or !presence mgv '1 year' 4"); + if ($message =~ /(?:$botnick[:,])?\s*!?help\s*(.*)/sx) { + _yield(privmsg => $targets, 'Try !presence username interval [truncate]'); + _yield(privmsg => $targets, q/For example, !presence mgv '2 days'/); + _yield(privmsg => $targets, q/or !presence mgv '1 year' 4/); return; } diff --git a/t/perlcritic.t b/t/perlcritic.t new file mode 100644 index 0000000..79e93dc --- /dev/null +++ b/t/perlcritic.t @@ -0,0 +1,10 @@ +#!/usr/bin/perl +use v5.14; +use warnings; + +use Test::More; + +BEGIN { plan skip_all => '$ENV{RELEASE_TESTING} is false' unless $ENV{RELEASE_TESTING} } +use Test::Perl::Critic -profile => 't/perlcriticrc'; + +all_critic_ok 'lib' diff --git a/t/perlcriticrc b/t/perlcriticrc new file mode 100644 index 0000000..40b151e --- /dev/null +++ b/t/perlcriticrc @@ -0,0 +1,41 @@ +severity = 1 + +[-BuiltinFunctions::ProhibitComplexMappings] +[-CodeLayout::RequireTidyCode] +[-ControlStructures::ProhibitPostfixControls] +[-ControlStructures::ProhibitUnlessBlocks] +[-Documentation::PodSpelling] +[-Documentation::RequirePodLinksIncludeText] +[-InputOutput::RequireBracedFileHandleWithPrint] +[-Modules::ProhibitAutomaticExportation] +[-References::ProhibitDoubleSigils] +[-RegularExpressions::ProhibitEnumeratedClasses] +[-RegularExpressions::ProhibitUnusualDelimiters] +[-RegularExpressions::RequireBracesForMultiline] +[-RegularExpressions::RequireLineBoundaryMatching] +[-Subroutines::RequireFinalReturn] +[-ValuesAndExpressions::ProhibitConstantPragma] +[-ValuesAndExpressions::ProhibitEmptyQuotes] +[-ValuesAndExpressions::ProhibitLeadingZeros] +[-ValuesAndExpressions::ProhibitMagicNumbers] +[-ValuesAndExpressions::ProhibitNoisyQuotes] +[-Variables::ProhibitLocalVars] +[-Variables::ProhibitPackageVars] +[-Variables::ProhibitPunctuationVars] + +[BuiltinFunctions::ProhibitStringyEval] +allow_includes = 1 + +[RegularExpressions::RequireExtendedFormatting] +minimum_regex_length_to_complain_about = 20 + +[Documentation::RequirePodSections] +lib_sections = NAME | SYNOPSIS | DESCRIPTION | AUTHOR | COPYRIGHT AND LICENSE +script_sections = NAME | SYNOPSIS | DESCRIPTION | AUTHOR | COPYRIGHT AND LICENSE + +[Subroutines::RequireArgUnpacking] +short_subroutine_statements = 5 +allow_subscripts = 1 + +[TestingAndDebugging::ProhibitNoWarnings] +allow_with_category_restriction = 1 -- 2.39.2