Expand notabs/eol testing to .pod and some files at the root
[dbsrgits/DBIx-Class.git] / xt / notabs.t
index de1baab..3c854f9 100644 (file)
@@ -2,26 +2,48 @@ use warnings;
 use strict;
 
 use Test::More;
+use File::Glob 'bsd_glob';
 use lib 't/lib';
 use DBICTest;
 
-# Don't run tests for installs
-unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
-  plan( skip_all => "Author tests not required for installation" );
-}
-
 require DBIx::Class;
 unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_notabs') ) {
   my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('test_notabs');
-  $ENV{RELEASE_TESTING} || DBICTest::AuthorCheck->is_author
+  $ENV{RELEASE_TESTING}
     ? die ("Failed to load release-testing module requirements: $missing")
     : plan skip_all => "Test needs: $missing"
 }
 
+# FIXME - temporary workaround for RT#82033
+{
+  no warnings 'redefine';
+  *Test::NoTabs::_is_perl_module = sub {
+    $_[0] =~ /\.(?:pm|pod)$/i || $_[0] =~ /::/;
+  }
+}
+
 Test::NoTabs::all_perl_files_ok(
-  qw/t xt lib script/,
-  DBICTest::AuthorCheck->is_author ? ('maint') : (),
+  qw/t xt lib script examples maint/,
 );
 
-# FIXME - need to fix Test::NoTabs - doesn't work with done_testing
+# check some non-"perl files" in the root separately
+# use .gitignore as a guide of what to skip
+# (or do not test at all if no .gitignore is found)
+if (open(my $gi, '<', '.gitignore')) {
+  my $skipnames;
+  while (my $ln = <$gi>) {
+    next if $ln =~ /^\s*$/;
+    chomp $ln;
+    $skipnames->{$_}++ for bsd_glob($ln);
+  }
+
+  for my $fn (bsd_glob('*')) {
+    next if $skipnames->{$fn};
+    next unless -f $fn;
+    Test::NoTabs::notabs_ok($fn);
+  }
+}
+
+# FIXME - Test::NoTabs declares 'no_plan' which conflicts with done_testing
+# https://github.com/schwern/test-more/issues/14
 #done_testing;