X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fextras.t;h=33654e57700198a476918ad161fa611c108f78b0;hb=09dcd779e42c0818abe4220b900b730fc67e1e7e;hp=d3142907d5299e04d3eb509d625e7cf4cb791f46;hpb=8c8a0b9a00083cf79d1ee44930ab0b4a1f8beaa9;p=p5sagit%2Fstrictures.git diff --git a/t/extras.t b/t/extras.t index d314290..33654e5 100644 --- a/t/extras.t +++ b/t/extras.t @@ -1,13 +1,12 @@ BEGIN { delete $ENV{PERL_STRICTURES_EXTRA} } use strict; use warnings; -use Test::More $] >= 5.008_004 ? qw(no_plan) - : (skip_all => 'Extra tests disabled on perls <= 5.008003'); +use Test::More 0.88; -use File::Temp; +plan skip_all => 'Extra tests disabled on perls <= 5.008003' unless $] >= 5.008_004; -my $tempdir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1); -chdir $tempdir; +use File::Temp; +use Cwd 'cwd'; my %extras; BEGIN { @@ -27,92 +26,110 @@ sub indirect::unimport { $indirect++; }; -{ +my $cwd = cwd; +for my $version ( 1, 2 ) { + + my $tempdir = File::Temp::tempdir('strictures-XXXXXX', CLEANUP => 1, TMPDIR => 1); + chdir $tempdir; + local $strictures::Smells_Like_VCS = undef; eval qq{ #line 1 "t/nogit.t" -use strictures; +use strictures $version; 1; } or die "$@"; - ok defined $strictures::Smells_Like_VCS, 'VCS dir has been checked'; - ok !$strictures::Smells_Like_VCS, 'VCS dir not detected with no .git'; -} + ok defined $strictures::Smells_Like_VCS, "VCS dir has been checked (v$version)"; + ok !$strictures::Smells_Like_VCS, "VCS dir not detected with no .git (v$version)"; -mkdir '.git'; + mkdir '.git'; -{ - local $strictures::Smells_Like_VCS = undef; - eval qq{ + { + local $strictures::Smells_Like_VCS = undef; + eval qq{ #line 1 "t/withgit.t" -use strictures; -1; -} or die "$@"; - ok defined $strictures::Smells_Like_VCS, 'VCS dir has been checked'; - ok $strictures::Smells_Like_VCS, 'VCS dir detected with .git'; -} - -$strictures::Smells_Like_VCS = 1; - -for my $check ( - ["file.pl" => 0], - ["test.pl" => 0], - ["library.pm" => 0], - ["t/test.t" => 1], - ["xt/test.t" => 1], - ["t/one.faket" => 1], - ["lib/module.pm" => 1], - ["other/one.pl" => 0], - ["other/t/test.t" => 0], - ["blib/module.pm" => 1], -) { - my ($file, $want) = @$check; - $indirect = 0; - eval qq{ -#line 1 "$file" -use strictures; -1; +use strictures $version; + 1; } or die "$@"; - my $not = $want ? '' : ' not'; - is $indirect, $want, - "file named $file does$not get extras"; -} + ok defined $strictures::Smells_Like_VCS, "VCS dir has been checked (v$version)"; + ok $strictures::Smells_Like_VCS, "VCS dir detected with .git (v$version)"; + } -{ - local $ENV{PERL_STRICTURES_EXTRA} = 1; - local $strictures::extra_load_states = undef; - local @INC = (sub { - die "Can't locate $_[1] in \@INC (...).\n" - if $extras{$_[1]}; - }, @INC); - local %INC = %INC; - delete $INC{$_} - for keys %extras; + chdir $cwd; + rmdir $tempdir; - { - open my $fh, '>', \(my $str = ''); - local *STDERR = $fh; + local $strictures::Smells_Like_VCS = 1; + + for my $check ( + ["file.pl" => 0], + ["test.pl" => 0], + ["library.pm" => 0], + ["t/test.t" => 1], + ["xt/test.t" => 1], + ["t/one.faket" => 1], + ["lib/module.pm" => 1], + ["other/one.pl" => 0], + ["other/t/test.t" => 0], + ["blib/module.pm" => 1], + ) { + my ($file, $want) = @$check; + $indirect = 0; eval qq{ -#line 1 "t/load_fail.t" -use strictures; +#line 1 "$file" +use strictures $version; 1; } or die "$@"; - - strictures->import; - like( - $str, - qr/Missing were:\n\n indirect multidimensional bareword::filehandles/, - "failure to load all three extra deps is reported" - ); + my $not = $want ? '' : ' not'; + is $indirect, $want, + "file named $file does$not get extras (v$version)"; } { - open my $fh, '>', \(my $str = ''); - local *STDERR = $fh; - eval qq{ + local $ENV{PERL_STRICTURES_EXTRA} = 1; + local %strictures::extra_load_states = (); + local @INC = (sub { + die "Can't locate $_[1] in \@INC (...).\n" + if $extras{$_[1]}; + }, @INC); + local %INC = %INC; + delete $INC{$_} + for keys %extras; + + { + open my $fh, '>', \(my $str = ''); + my $e; + { + local *STDERR = $fh; + eval qq{ #line 1 "t/load_fail.t" -use strictures; +use strictures $version; 1; - } or die "$@"; - is $str, '', "extra dep load failure is not reported a second time"; + } or $e = "$@"; + } + die $e if defined $e; + + like( + $str, + qr/Missing were:\n\n indirect multidimensional bareword::filehandles/, + "failure to load all three extra deps is reported (v$version)" + ); + } + + { + open my $fh, '>', \(my $str = ''); + my $e; + { + local *STDERR = $fh; + eval qq{ +#line 1 "t/load_fail.t" +use strictures $version; +1; + } or $e = "$@"; + } + die $e if defined $e; + + is $str, '', "extra dep load failure is not reported a second time (v$version)"; + } } } + +done_testing;