X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fstrictures.t;h=877439be7de76911df91ea5717e789f7a8c37be3;hb=c0c125287b0ab28dc9dcfb84e44e635c1c368d80;hp=47cfa20f61455b6e8671d7257eea62bf774ece4b;hpb=abacb15a012489948b584b4bfb6470d2027adfeb;p=p5sagit%2Fstrictures.git diff --git a/t/strictures.t b/t/strictures.t index 47cfa20..877439b 100644 --- a/t/strictures.t +++ b/t/strictures.t @@ -1,4 +1,9 @@ -mkdir('t/smells-of-vcs/.git') or die "Couldn't create fake .git: $!"; +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: $!"; use Test::More qw(no_plan); @@ -10,8 +15,10 @@ sub capture_us { push @us, capture_stuff } sub capture_expect { push @expect, capture_stuff } { + BEGIN { $ENV{PERL_STRICTURES_EXTRA} = 0 } use strictures 1; BEGIN { capture_us } + BEGIN { delete $ENV{PERL_STRICTURES_EXTRA} } } { @@ -27,17 +34,54 @@ foreach my $idx (0 .. $#us) { is($us[$idx][1], $expect[$idx][1], 'Warnings ok for case '.($idx+1)); } -{ - local $0 = 't/00load.t'; +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"); - my $r = eval q{ - use strictures 1; - new Foo 1, 2, 3; - }; - # I don't test $@ here since if indirect isn't installed we hit one - # error and if it is we hit another; it's enough the code path's hit. - ok(!$r, 'strictures blows up for t/00load.t'); + 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"); + } + ok(eval { require "other/one.pl"; 1 }, "Loaded other/one.pl ok"); + chdir("../.."); } 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 ); + + { + 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" + ); + } + + { + open my $fh, '>', \my $str; + local *STDERR = $fh; + strictures->import; + ok( !$str, "extra dep load failure is not reported a second time" ); + } +}