Audit/simplify various ->is_* runmode specs
[dbsrgits/DBIx-Class.git] / t / lib / DBICTest / RunMode.pm
index 604e71f..fb36805 100644 (file)
@@ -13,12 +13,25 @@ BEGIN {
 
     die __PACKAGE__ . " must be loaded before DBIx::Class (or modules using DBIx::Class) at $frame[1] line $frame[2]\n";
   }
+
+  if ( $ENV{DBICTEST_VERSION_WARNS_INDISCRIMINATELY} ) {
+    my $ov = UNIVERSAL->can("VERSION");
+
+    require Carp;
+
+    no warnings 'redefine';
+    *UNIVERSAL::VERSION = sub {
+      Carp::carp( 'Argument "blah bleh bloh" isn\'t numeric in subroutine entry' );
+      &$ov;
+    };
+  }
 }
 
 use Path::Class qw/file dir/;
 use Fcntl ':DEFAULT';
 use File::Spec ();
 use File::Temp ();
+use DBICTest::Util 'local_umask';
 
 _check_author_makefile() unless $ENV{DBICTEST_NO_MAKEFILE_VERIFICATION};
 
@@ -43,6 +56,7 @@ sub tmpdir {
     else {
       # make sure we can actually create and sysopen a file in this dir
       local $@;
+      my $u = local_umask(0); # match the umask we use in DBICTest(::Schema)
       my $tempfile = '<NONCREATABLE>';
       eval {
         $tempfile = File::Temp->new(
@@ -59,10 +73,11 @@ sub tmpdir {
       } or do {
         chomp( my $err = $@ );
         my @x_tests = map { (defined $_) ? ( $_ ? 1 : 0 ) : 'U' } map {(-e, -d, -f, -r, -w, -x, -o)} ("$dir", "$tempfile");
-        $reason_dir_unusable = sprintf <<"EOE", "$tempfile"||'', $err, scalar $>, scalar $), (stat($dir))[4,5,2], @x_tests;
+        $reason_dir_unusable = sprintf <<"EOE", "$tempfile"||'', $err, scalar $>, scalar $), umask(), (stat($dir))[4,5,2], @x_tests;
 File::Spec->tmpdir returned a directory which appears to be non-writeable:
 Error encountered while testing '%s': %s
 Process EUID/EGID: %s / %s
+Effective umask:   %o
 TmpDir UID/GID:    %s / %s
 TmpDir StatMode:   %o
 TmpDir X-tests:    -e:%s -d:%s -f:%s -r:%s -w:%s -x:%s -o:%s
@@ -194,15 +209,31 @@ sub is_author {
 }
 
 sub is_smoker {
-  return
-    ( ($ENV{TRAVIS}||'') eq 'true' )
-      ||
+  return (
     ( $ENV{AUTOMATED_TESTING} && ! $ENV{PERL5_CPANM_IS_RUNNING} && ! $ENV{RELEASE_TESTING} )
-  ;
+      or
+    __PACKAGE__->is_ci
+  );
+}
+
+sub is_ci {
+  return (
+    ($ENV{TRAVIS}||'') eq 'true'
+      and
+    ($ENV{TRAVIS_REPO_SLUG}||'') =~ m|\w+/dbix-class$|
+  )
 }
 
 sub is_plain {
-  return (! __PACKAGE__->is_smoker && ! __PACKAGE__->is_author && ! $ENV{RELEASE_TESTING} )
+  return (
+    ! $ENV{RELEASE_TESTING}
+      and
+    ! $ENV{DBICTEST_RUN_ALL_TESTS}
+      and
+    ! __PACKAGE__->is_smoker
+      and
+    ! __PACKAGE__->is_author
+  )
 }
 
 # Try to determine the root of a checkout/untar if possible