No extra tests on ancient perls
Peter Rabbitson [Sun, 11 Mar 2012 12:49:04 +0000 (13:49 +0100)]
Changes
lib/strictures.pm
t/strictures.t

diff --git a/Changes b/Changes
index 463a6de..89498d3 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,5 @@
+  - disable extra tests on perls <= 5.008003, things do not work there as
+    expected
 1.002002 - 2011-02-25
   - only try and mkdir the .git if it doesn't already exist so repeated
     test runs don't explode
index 06301c0..911746d 100644 (file)
@@ -3,6 +3,8 @@ package strictures;
 use strict;
 use warnings FATAL => 'all';
 
+use constant _PERL_LT_5_8_4 => ($] < 5.008004) ? 1 : 0;
+
 our $VERSION = '1.002002'; # 1.2.2
 
 sub VERSION {
@@ -22,10 +24,15 @@ sub VERSION {
 sub import {
   strict->import;
   warnings->import(FATAL => 'all');
+
   my $extra_tests = do {
     if (exists $ENV{PERL_STRICTURES_EXTRA}) {
-      $ENV{PERL_STRICTURES_EXTRA}
-    } else {
+      if (_PERL_LT_5_8_4 and $ENV{PERL_STRICTURES_EXTRA}) {
+        die 'PERL_STRICTUTRES_EXTRA checks are not available on perls older than 5.8.4, '
+          . "please unset \$ENV{PERL_STRICTURES_EXTRA}\n";
+      }
+      $ENV{PERL_STRICTURES_EXTRA};
+    } elsif (! _PERL_LT_5_8_4) {
       !!($0 =~ /^x?t\/.*(?:load|compile|coverage|use_ok).*\.t$/
          and (-e '.git' or -e '.svn'))
     }
@@ -41,7 +48,8 @@ sub import {
       multidimensional->unimport;
       bareword::filehandles->unimport;
     } else {
-      die "strictures.pm extra testing active but couldn't load modules.
+      die <<EOE;
+strictures.pm extra testing active but couldn't load modules.
 Extra testing is auto-enabled in checkouts only, so if you're the author
 of a strictures using module you need to run:
 
@@ -49,7 +57,8 @@ of a strictures using module you need to run:
 
 but these modules are not required by your users.
 
-Error loading modules was: $@";
+Error loading modules was: $@
+EOE
     }
   }
 }
index e6da256..5dd1953 100644 (file)
@@ -30,7 +30,9 @@ foreach my $idx (0 .. $#us) {
   is($us[$idx][1], $expect[$idx][1], 'Warnings ok for case '.($idx+1));
 }
 
-{
+SKIP: {
+  skip 'Extra tests disabled on perls <= 5.008003', 1
+    if $] < 5.008004;
   local $0 = 't/00load.t';
   sub Foo::new { 1 }
   chdir("t/smells-of-vcs");