bump version to 1.005006
[p5sagit/strictures.git] / lib / strictures.pm
index f979fa2..63ce90e 100644 (file)
@@ -7,27 +7,25 @@ BEGIN {
   *_PERL_LT_5_8_4 = ($] < 5.008004) ? sub(){1} : sub(){0};
 }
 
-our $VERSION = '1.005002'; # 1.5.2
+our $VERSION = '1.005006';
+$VERSION = eval $VERSION;
 
 sub VERSION {
-  for ($_[1]) {
+  my ($class, $version) = @_;
+  for ($version) {
     last unless defined && !ref && int != 1;
     die "Major version specified as $_ - this is strictures version 1";
   }
-  # disable this since Foo->VERSION(undef) correctly returns the version
-  # and that can happen either if our caller passes undef explicitly or
-  # because the for above autovivified $_[1] - I could make it stop but
-  # it's pointless since we don't want to blow up if the caller does
-  # something valid either.
+  # passing undef here may either warn or die depending on the version of perl.
+  # we can't match the caller's warning state in this case, so just disable the
+  # warning.
   no warnings 'uninitialized';
   shift->SUPER::VERSION(@_);
 }
 
 our $extra_load_states;
 
-our $Smells_Like_VCS = (-e '.git' || -e '.svn' || -e '.hg'
-  || (-e '../../dist.ini'
-      && (-e '../../.git' || -e '../../.svn' || -e '../../.hg' )));
+our $Smells_Like_VCS;
 
 sub import {
   strict->import;
@@ -41,8 +39,13 @@ sub import {
       }
       $ENV{PERL_STRICTURES_EXTRA};
     } elsif (! _PERL_LT_5_8_4) {
-      !!((caller)[1] =~ /^(?:t|xt|lib|blib)/
-         and $Smells_Like_VCS)
+      (caller)[1] =~ /^(?:t|xt|lib|blib)[\\\/]/
+        and defined $Smells_Like_VCS ? $Smells_Like_VCS
+          : ( $Smells_Like_VCS = !!(
+            -e '.git' || -e '.svn' || -e '.hg'
+            || (-e '../../dist.ini'
+              && (-e '../../.git' || -e '../../.svn' || -e '../../.hg' ))
+          ))
     }
   };
   if ($extra_tests) {
@@ -105,7 +108,7 @@ is equivalent to
 
 except when called from a file which matches:
 
-  (caller)[1] =~ /^(?:t|xt|lib|blib)/
+  (caller)[1] =~ /^(?:t|xt|lib|blib)[\\\/]/
 
 and when either C<.git>, C<.svn>, or C<.hg> is present in the current directory (with
 the intention of only forcing extra tests on the author side) -- or when C<.git>,