X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fstrictures.t;h=b721a66cd89129b8ba55791fb82471fbd079fcb3;hb=24590d987b3ff66dc1fe70c0d86f6ba4e5e5de21;hp=877439be7de76911df91ea5717e789f7a8c37be3;hpb=bce2c903818f2aa627532c2d91c644ff4d1afc89;p=p5sagit%2Fstrictures.git diff --git a/t/strictures.t b/t/strictures.t index 877439b..b721a66 100644 --- a/t/strictures.t +++ b/t/strictures.t @@ -1,87 +1,54 @@ -BEGIN { delete $ENV{PERL_STRICTURES_EXTRA} } - -# -e is sufficient here. --e 't/smells-of-vcs/.git' - or mkdir('t/smells-of-vcs/.git') - or die "Couldn't create fake .git: $!"; +BEGIN { $ENV{PERL_STRICTURES_EXTRA} = 0 } use Test::More qw(no_plan); -our (@us, @expect); - -sub capture_stuff { [ $^H, ${^WARNING_BITS} ] } +our ($hints, $warning_bits); -sub capture_us { push @us, capture_stuff } -sub capture_expect { push @expect, capture_stuff } +sub capture_hints { + # ignore lexicalized hints + $hints = $^H & ~ 0x20000; + $warning_bits = defined ${^WARNING_BITS} ? (unpack "H*", ${^WARNING_BITS}) : undef; +} -{ - BEGIN { $ENV{PERL_STRICTURES_EXTRA} = 0 } - use strictures 1; - BEGIN { capture_us } - BEGIN { delete $ENV{PERL_STRICTURES_EXTRA} } +sub test_hints { + my $name = shift; + my $want_hints = $hints; + my $want_bits = $warning_bits; + capture_hints; + is($hints, $want_hints, "Hints ok for $name"); + is($warning_bits, $want_bits, "Warnings ok for $name"); } { use strict; use warnings FATAL => 'all'; - BEGIN { capture_expect } + BEGIN { capture_hints } } -# I'm assuming here we'll have more cases later. maybe not. eh. - -foreach my $idx (0 .. $#us) { - is($us[$idx][0], $expect[$idx][0], 'Hints ok for case '.($idx+1)); - is($us[$idx][1], $expect[$idx][1], 'Warnings ok for case '.($idx+1)); +{ + use strictures 1; + BEGIN { test_hints "version 1" } } -SKIP: { - skip 'Extra tests disabled on perls <= 5.008003', 1 - if $] < 5.008004; - skip 'Not got all the modules to do this', 1 - unless eval { - require indirect; - require multidimensional; - require bareword::filehandles; - 1; - }; - sub Foo::new { 1 } - chdir("t/smells-of-vcs"); - local $strictures::Smells_Like_VCS = 1; - foreach my $file (qw(lib/one.pm t/one.faket)) { - ok(!eval { require $file; 1 }, "Failed to load ${file}"); - like($@, qr{Indirect call of method}, "Failed due to indirect.pm, ok"); +{ + use strict; + BEGIN { + warnings->import('all'); + warnings->import(FATAL => @strictures::WARNING_CATEGORIES); + warnings->unimport(FATAL => @strictures::V2_NONFATAL); + warnings->import(@strictures::V2_NONFATAL); + warnings->unimport(@strictures::V2_DISABLE); } - ok(eval { require "other/one.pl"; 1 }, "Loaded other/one.pl ok"); - chdir("../.."); + BEGIN { capture_hints } } -ok(!eval q{use strictures 2; 1; }, "Can't use strictures 2 (this is version 1)"); - -SKIP: { - skip 'Extra tests disabled on perls <= 5.008003', 1 - if $] < 5.008004; - local $ENV{PERL_STRICTURES_EXTRA} = 1; - local $strictures::extra_load_states = undef; - local @INC = ("t/dep_constellations/broken", @INC); - local %INC = %INC; - delete $INC{$_} - for qw( indirect.pm multidimensional.pm bareword/filehandles.pm ); +{ + use strictures 2; + BEGIN { test_hints "version 2" } +} - { - open my $fh, '>', \my $str; - local *STDERR = $fh; - strictures->import; - like( - $str, - qr/Missing were:\n\n indirect multidimensional bareword::filehandles/, - "failure to load all three extra deps is reported" - ); - } +my $v; +eval { $v = strictures->VERSION; 1 } or diag $@; +is $v, $strictures::VERSION, '->VERSION returns version correctly'; - { - open my $fh, '>', \my $str; - local *STDERR = $fh; - strictures->import; - ok( !$str, "extra dep load failure is not reported a second time" ); - } -} +ok(!eval q{use strictures 3; 1; }, "Can't use strictures 3 (this is version 2)");