Add 'no_test' import option to allow more composability
[catagits/Test-EOL.git] / lib / Test / EOL.pm
index fbbaa2f..860e427 100644 (file)
@@ -6,8 +6,8 @@ use warnings;
 
 use Test::Builder;
 use File::Spec;
-use FindBin qw($Bin);
 use File::Find;
+use Cwd qw/ cwd /;
 
 use vars qw( $PERL $UNTAINT_PATTERN $PERL_PATTERN);
 
@@ -24,6 +24,8 @@ my %file_find_arg = ($] <= 5.006) ? () : (
 my $Test  = Test::Builder->new;
 my $updir = File::Spec->updir();
 
+my $no_plan;
+
 sub import {
     my $self   = shift;
     my $caller = caller;
@@ -33,6 +35,11 @@ sub import {
         *{$caller.'::all_perl_files_ok'} = \&all_perl_files_ok;
     }
     $Test->exported_to($caller);
+
+    if ($_[0] && $_[0] eq 'no_plan') {
+        shift;
+        $no_plan = 1;
+    }
     $Test->plan(@_);
 }
 
@@ -42,12 +49,14 @@ sub _all_perl_files {
 }
 
 sub _all_files {
-    my @base_dirs = @_ ? @_ : File::Spec->catdir($Bin, $updir);
+    my @base_dirs = @_ ? @_ : cwd();
+    my $options = pop(@base_dirs) if ref $base_dirs[-1] eq 'HASH';
     my @found;
     my $want_sub = sub {
-        return if ($File::Find::dir =~ m![\\/]?CVS[\\/]|[\\/]?.svn[\\/]!); # Filter out cvs or subversion dirs/
+        return if ($File::Find::dir =~ m![\\/]?CVS[\\/]|[\\/]?\.svn[\\/]!); # Filter out cvs or subversion dirs/
         return if ($File::Find::dir =~ m![\\/]?blib[\\/]libdoc$!); # Filter out pod doc in dist
         return if ($File::Find::dir =~ m![\\/]?blib[\\/]man\d$!); # Filter out pod doc in dist
+        return if ($File::Find::dir =~ m![\\/]?inc!); # Filter out Module::Install stuff
         return if ($File::Find::name =~ m!Build$!i); # Filter out autogenerated Build script
         return unless (-f $File::Find::name && -r _);
         push @found, File::Spec->no_upwards( $File::Find::name );
@@ -165,6 +174,7 @@ sub _module_to_path {
 }
 
 sub _make_plan {
+    return if $no_plan;
     unless ($Test->has_plan) {
         $Test->plan( 'no_plan' );
     }
@@ -213,6 +223,13 @@ or
   use Test::EOL;
   all_perl_files_ok({ trailing_whitespace => 1 }, @mydirs );
 
+or
+
+  use Test::More;
+  use Test::EOL 'no_test';
+  all_perl_files_ok();
+  done_testing;
+
 =head1 DESCRIPTION
 
 This module scans your project/distribution for any perl files (scripts,