X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstrictures.pm;h=c7ee8fb874819e6f6980ba1ab0d95a2c607ac7ee;hb=3e14202fba99384a3a6f990827ca6ba0dddf60f6;hp=c2b75b74783841e95f67abe6fd170be61864c8e2;hpb=500f28df33b398cfb8774e5e7c8c7e9c9894700f;p=p5sagit%2Fstrictures.git diff --git a/lib/strictures.pm b/lib/strictures.pm index c2b75b7..c7ee8fb 100644 --- a/lib/strictures.pm +++ b/lib/strictures.pm @@ -7,26 +7,25 @@ BEGIN { *_PERL_LT_5_8_4 = ($] < 5.008004) ? sub(){1} : sub(){0}; } -our $VERSION = '1.004004'; # 1.4.4 +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 '../../dist.ini' && (-e '../../.git' || -e '../../.svn'))); +our $Smells_Like_VCS; sub import { strict->import; @@ -40,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) { @@ -104,13 +108,14 @@ 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> or C<.svn> is present in the current directory (with -the intention of only forcing extra tests on the author side) -- or when C<.git> -or C<.svn> is present two directories up along with C (which would -indicate we are in a C operation, via L) -- -or when the C environment variable is set, in which case +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>, C<.svn>, or C<.hg> is present two directories up along with +C (which would indicate we are in a C operation, via +L) -- or when the C environment variable is +set, in which case use strictures 1; @@ -122,9 +127,9 @@ is equivalent to no multidimensional; no bareword::filehandles; -Note that C may at some point add even more tests, with only a minor -version increase, but any changes to the effect of C in -normal mode will involve a major version bump. +Note that C may at some point add even more tests, with +only a minor version increase, but any changes to the effect of C in normal mode will involve a major version bump. If any of the extra testing modules are not present, L will complain loudly, once, via C, and then shut up. But you really @@ -155,10 +160,10 @@ undesired behaviour this can be overridden by setting the C environment variable. If additional useful author side checks come to mind, I'll add them to the -C code path only -- this will result in a minor version increase (e.g. -1.000000 to 1.001000 (1.1.0) or similar). Any fixes only to the mechanism of -this code will result in a sub-version increase (e.g. 1.000000 to 1.000001 -(1.0.1)). +C code path only -- this will result in a minor version +increase (e.g. 1.000000 to 1.001000 (1.1.0) or similar). Any fixes only to the +mechanism of this code will result in a sub-version increase (e.g. 1.000000 to +1.000001 (1.0.1)). If the behaviour of C in normal mode changes in any way, that will constitute a major version increase -- and the code already checks @@ -230,9 +235,27 @@ significantly over time, especially for 1.004 where we changed things to ensure it only fires on files in your checkout (rather than L-using modules you happened to have installed, which was just silly). However, I hope the above clarifies why a heuristic approach is not only necessary but -desirable from a point of view of providing new users with as much safety as possible, -and will allow any future discussion on the subject to focus on "how do we -minimise annoyance to people deploying from checkouts intentionally". +desirable from a point of view of providing new users with as much safety as +possible, and will allow any future discussion on the subject to focus on "how +do we minimise annoyance to people deploying from checkouts intentionally". + +=head1 SEE ALSO + +=over 4 + +=item * + +L + +=item * + +L + +=item * + +L + +=back =head1 COMMUNITY AND SUPPORT @@ -262,6 +285,8 @@ Karen Etheridge (cpan:ETHER) Mithaldu - Christian Walde (cpan:MITHALDU) +haarg - Graham Knop (cpan:HAARG) + =head1 COPYRIGHT Copyright (c) 2010 the strictures L and L