Reorganize runmode detection a bit
Peter Rabbitson [Sun, 26 Sep 2010 16:39:21 +0000 (18:39 +0200)]
Add two helpers: is_smoker and is_plain, to make it easier to indicate which
test should run when. Note that cpanm sets AUTOMATED_TESTING to trick modules
that expect input, so is_smoker isn't as simple as it should have been.

t/lib/DBICTest.pm
t/lib/DBICTest/RunMode.pm [moved from t/lib/DBICTest/AuthorCheck.pm with 92% similarity]
t/zzzzzzz_perl_perf_bug.t
t/zzzzzzz_sqlite_deadlock.t
xt/eol.t
xt/notabs.t
xt/pod.t
xt/podcoverage.t

index 7ce9410..953b249 100644 (file)
@@ -3,7 +3,7 @@ package # hide from PAUSE
 
 use strict;
 use warnings;
-use DBICTest::AuthorCheck;
+use DBICTest::RunMode;
 use DBICTest::Schema;
 use Carp;
 
similarity index 92%
rename from t/lib/DBICTest/AuthorCheck.pm
rename to t/lib/DBICTest/RunMode.pm
index c75b887..6da3ead 100644 (file)
@@ -1,5 +1,5 @@
 package # hide from PAUSE 
-    DBICTest::AuthorCheck;
+    DBICTest::RunMode;
 
 use strict;
 use warnings;
@@ -108,10 +108,18 @@ sub is_author {
   return (
     ( not -d $root->subdir ('inc') )
       or
-    ( -e $root->subdir ('inc')->file ($^O eq 'VMS' ? '_author' : '.author') )
+    ( -e $root->subdir ('inc')->subdir ($^O eq 'VMS' ? '_author' : '.author') )
   );
 }
 
+sub is_smoker {
+  return ( $ENV{AUTOMATED_TESTING} && ! $ENV{PERL5_CPANM_IS_RUNNING} && ! $ENV{RELEASE_TESTING} )
+}
+
+sub is_plain {
+  return (! __PACKAGE__->is_smoker && ! __PACKAGE__->is_author && ! $ENV{RELEASE_TESTING} )
+}
+
 # Try to determine the root of a checkout/untar if possible
 # or return undef
 sub _find_co_root {
index 558b4f0..e0aad96 100644 (file)
@@ -23,8 +23,8 @@ plan skip_all =>
   'Skipping RH perl performance bug tests as DBIC_NO_WARN_BAD_PERL set'
   if ( $ENV{DBIC_NO_WARN_BAD_PERL} );
 
-plan skip_all => 'Skipping as AUTOMATED_TESTING is set'
-  if ( $ENV{AUTOMATED_TESTING} );
+plan skip_all => 'Skipping as system appears to be a smoker'
+  if DBICTest::RunMode->is_smoker;
 
 plan tests => 3;
 
index a049f22..c967c25 100644 (file)
@@ -9,12 +9,12 @@ use File::Temp ();
 use DBICTest;
 use DBICTest::Schema;
 
-unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
+if ( DBICTest::RunMode->is_plain ) {
   plan( skip_all => "Skipping test on plain module install" );
 }
 
 plan tests => 2;
-my $wait_for = 30;  # how many seconds to wait
+my $wait_for = 120;  # how many seconds to wait
 
 for my $close (0,1) {
 
index 609f6ad..e61ce41 100644 (file)
--- a/xt/eol.t
+++ b/xt/eol.t
@@ -6,7 +6,7 @@ use lib 't/lib';
 use DBICTest;
 
 # Don't run tests for installs
-unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
+if ( DBICTest::RunMode->is_plain ) {
   plan( skip_all => "Author tests not required for installation" );
 }
 
@@ -15,7 +15,7 @@ plan skip_all => 'Test::EOL very broken';
 require DBIx::Class;
 unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_eol') ) {
   my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('test_eol');
-  $ENV{RELEASE_TESTING} || DBICTest::AuthorCheck->is_author
+  (! DBICTest::RunMode->is_plain && ! DBICTest::RunMode->is_smoker )
     ? die ("Failed to load release-testing module requirements: $missing")
     : plan skip_all => "Test needs: $missing"
 }
@@ -24,7 +24,7 @@ TODO: {
   local $TODO = 'Do not fix those yet - we have way too many branches out there, merging will be hell';
   Test::EOL::all_perl_files_ok({ trailing_whitespace => 1},
     qw/t xt lib script/,
-    DBICTest::AuthorCheck->is_author ? ('maint') : (),
+    DBICTest::RunMode->is_author ? ('maint') : (),
   );
 }
 
index de1baab..76895b2 100644 (file)
@@ -6,21 +6,21 @@ use lib 't/lib';
 use DBICTest;
 
 # Don't run tests for installs
-unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
+if ( DBICTest::RunMode->is_plain ) {
   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
+  (! DBICTest::RunMode->is_plain && ! DBICTest::RunMode->is_smoker )
     ? die ("Failed to load release-testing module requirements: $missing")
     : plan skip_all => "Test needs: $missing"
 }
 
 Test::NoTabs::all_perl_files_ok(
   qw/t xt lib script/,
-  DBICTest::AuthorCheck->is_author ? ('maint') : (),
+  DBICTest::RunMode->is_author ? ('maint') : (),
 );
 
 # FIXME - need to fix Test::NoTabs - doesn't work with done_testing
index 1c55c96..328a1ed 100644 (file)
--- a/xt/pod.t
+++ b/xt/pod.t
@@ -6,14 +6,14 @@ use lib qw(t/lib);
 use DBICTest;
 
 # Don't run tests for installs
-unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
+if ( DBICTest::RunMode->is_plain ) {
   plan( skip_all => "Author tests not required for installation" );
 }
 
 require DBIx::Class;
 unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_pod') ) {
   my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('test_pod');
-  $ENV{RELEASE_TESTING} || DBICTest::AuthorCheck->is_author
+  (! DBICTest::RunMode->is_plain && ! DBICTest::RunMode->is_smoker )
     ? die ("Failed to load release-testing module requirements: $missing")
     : plan skip_all => "Test needs: $missing"
 }
index 7f45665..8c9132e 100644 (file)
@@ -8,7 +8,7 @@ use DBICTest;
 use namespace::clean;
 
 # Don't run tests for installs
-unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
+if ( DBICTest::RunMode->is_plain ) {
   plan( skip_all => "Author tests not required for installation" );
 }