Login
Added test cases and fixed RT #31281 concerning
authorJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 9 Dec 2007 04:23:35 +0000 (04:23 +0000)
committerJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 9 Dec 2007 04:23:35 +0000 (04:23 +0000)
undetected shebang lines.

lib/Perl/Critic/Utils.pm
t/05_utils.t

index 2fb3f1a..9cde616 100644 (file)
@@ -1018,7 +1018,7 @@ sub _is_perl {
     my $first = <$fh>;
     close $fh or throw_generic "unable to close $file: $!";
 
-    return 1 if defined $first && ( $first =~ m{ \A [#]![ ]*\S*perl }mx );
+    return 1 if defined $first && ( $first =~ m{ \A [#]!.*perl }mx );
     return;
 }
 
index 80e5338..177b6e3 100644 (file)
@@ -10,7 +10,7 @@
 use strict;
 use warnings;
 use PPI::Document;
-use Test::More tests => 94;
+use Test::More tests => 101;
 
 #-----------------------------------------------------------------------------
 
@@ -228,8 +228,35 @@ is( interpolate( 'literal'    ), "literal",    'Interpolation' );
     for ( qw(foo.doc foo.txt foo.conf foo) ) {
         ok( ! Perl::Critic::Utils::_is_perl($_), qq{Is not perl: '$_'} );
     }
-}
 
+    use File::Temp qw<tempfile>;
+
+    my @perl_shebangs = ( 
+        '#!perl', 
+        '#!/usr/local/bin/perl', 
+        '#!/usr/local/bin/perl-5.8',
+        '#!/bin/env perl',
+    );
+
+    for (@perl_shebangs) {
+        my ($fh, $filename) = tempfile() or die 'Could not open tempfile';
+        print {$fh} "$_\n"; close $fh; # Must close to flush buffer
+        ok( Perl::Critic::Utils::_is_perl($filename), qq{Is perl: '$_'});
+    }
+
+    my @not_perl_shebangs = (
+        'shazbot',
+        '#!/usr/bin/ruby',
+        '#!/bin/env python',
+    );
+
+    for (@not_perl_shebangs) {
+        my ($fh, $filename) = tempfile or die 'Could not open tempfile';
+        print {$fh} "$_\n"; close $fh; # Must close to flush buffer
+        ok( ! Perl::Critic::Utils::_is_perl($_), qq{Is not perl: '$_'});
+    }
+}
+     
 #-----------------------------------------------------------------------------
 # _is_backup() tests