Login
Fix RequireFilenameMatchesPackage in terms of programs.
authorElliot Shank <perl@galumph.com>
Sun, 7 Sep 2008 09:32:30 +0000 (09:32 +0000)
committerElliot Shank <perl@galumph.com>
Sun, 7 Sep 2008 09:32:30 +0000 (09:32 +0000)
Patch from Schwern in RT #39024.

lib/Perl/Critic/Policy/Modules/RequireFilenameMatchesPackage.pm
t/Modules/RequireFilenameMatchesPackage.run

index f458f3c..592d338 100644 (file)
@@ -14,7 +14,7 @@ use Readonly;
 
 use File::Spec;
 
-use Perl::Critic::Utils qw{ :severities };
+use Perl::Critic::Utils qw{ :severities is_script };
 use base 'Perl::Critic::Policy';
 
 our $VERSION = '1.092';
@@ -33,6 +33,12 @@ sub applies_to           { return 'PPI::Document'   }
 
 #-----------------------------------------------------------------------------
 
+sub is_document_exempt {
+    my ( $self, $document ) = @_;
+
+    return is_script($document);   # Must be a library or module.
+}
+
 sub violates {
     my ($self, $elem, $doc) = @_;
 
index 56b5afb..6038c80 100644 (file)
@@ -1,4 +1,3 @@
-#------------------------------------------------------------------------------
 ## name Basic passes.
 ## filename OK.pm
 ## failures 0
@@ -8,6 +7,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic passes.
 ## filename Filename/OK.pm
 ## failures 0
@@ -17,6 +17,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic passes.
 ## filename lib/Filename/OK.pm
 ## failures 0
@@ -26,6 +27,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic passes.
 ## filename blib/lib/Filename/OK.pm
 ## failures 0
@@ -35,6 +37,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic passes.
 ## filename OK.pl
 ## failures 0
@@ -44,6 +47,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic passes.
 ## filename Filename-OK-1.00/OK.pm
 ## failures 0
@@ -53,6 +57,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic passes.
 ## filename Filename-OK/OK.pm
 ## failures 0
@@ -62,6 +67,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic passes.
 ## filename Foobar-1.00/OK.pm
 ## failures 0
@@ -71,6 +77,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic Failure.
 ## filename Bad.pm
 ## failures 1
@@ -80,6 +87,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic Failure.
 ## filename Filename/Bad.pm
 ## failures 1
@@ -89,6 +97,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic Failure.
 ## filename lib/Filename/BadOK.pm
 ## failures 1
@@ -98,6 +107,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic Failure.
 ## filename ok.pm
 ## failures 1
@@ -107,6 +117,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic Failure.
 ## filename filename/OK.pm
 ## failures 1
@@ -116,6 +127,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Basic Failure.
 ## filename Foobar/OK.pm
 ## failures 1
@@ -125,6 +137,7 @@ package Filename::OK;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name first package is main, with inner package
 ## filename some_script
 ## failures 0
@@ -141,6 +154,7 @@ sub frobulate{};
 1;
 
 #------------------------------------------------------------------------------
+
 ## name second package is main, with inner package
 ## filename some_script
 ## failures 1
@@ -157,6 +171,7 @@ Inner::frobulate( @ARGV );
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Pass with apostrophe.
 ## filename Oh.pm
 ## failures 0
@@ -166,6 +181,7 @@ package D'Oh;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Pass with apostrophe.
 ## filename D/Oh.pm
 ## failures 0
@@ -175,6 +191,7 @@ package D'Oh;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Failure with apostrophe.
 ## filename oh.pm
 ## failures 1
@@ -184,6 +201,7 @@ package D'Oh;
 1;
 
 #------------------------------------------------------------------------------
+
 ## name Failure with apostrophe.
 ## filename d/Oh.pm
 ## failures 1
@@ -192,6 +210,15 @@ package D'Oh;
 package D'Oh;
 1;
 
+#-----------------------------------------------------------------------------
+
+## name programs are exempt
+## failures 0
+## filename foo.plx
+## cut
+#!/usr/bin/perl
+package Wibble;
+
 ##############################################################################
 # Local Variables:
 #   mode: cperl