X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F05-explicit-cleanee.t;h=3cd3bd5b5ffb7b2137bcb28a0fc0d3d662b04be5;hb=d87b743521ce656edc828bd707764b6a163b3e33;hp=3556a5dfdd4787a69bf460f3dba3a02998de284f;hpb=fcfe7810e5ba4f72dadf41d7d7cd92621bbcad4f;p=p5sagit%2Fnamespace-clean.git diff --git a/t/05-explicit-cleanee.t b/t/05-explicit-cleanee.t index 3556a5d..3cd3bd5 100644 --- a/t/05-explicit-cleanee.t +++ b/t/05-explicit-cleanee.t @@ -4,7 +4,7 @@ use strict; use FindBin; use lib "$FindBin::Bin/lib"; -use Test::More tests => 19; +use Test::More tests => 2019; use_ok('CleaneeTarget'); @@ -23,3 +23,43 @@ ok !CleaneeTarget->can('d_baz'), 'directly removed disappeared (2/2)'; my @values = qw( 23 27 17 XFOO XBAR XBAZ 7 8 9 ); is(CleaneeTarget->summary->[ $_ ], $values[ $_ ], sprintf('testing sub in cleanee (%d/%d)', $_ + 1, scalar @values)) for 0 .. $#values; + + +# some torture +SKIP: { + + skip "This part of the test segfaults perl $] with both tie() and B::H::EOS." + . ' Actual code (e.g. DBIx::Class) works fine so did not investigate further', + 2000 if $] < 5.008003; + + local @INC = @INC; + my @code; + unshift @INC, sub { + + if ($_[1] =~ /CleaneeTarget\/No(\d+)/) { + my @code = ( + "package CleaneeTarget::No${1};", + "sub x_foo { 'XFOO' }", + "sub x_bar { 'XBAR' }", + + "use CleaneeBridgeExplicit;", + + "1;", + ); + + return sub { return 0 unless @code; $_ = shift @code; 1; } + } + else { + return (); + } + }; + + for (1..1000) { + my $pkg = "CleaneeTarget::No${_}"; + + my @val = require "CleaneeTarget/No${_}.pm"; + + ok !$pkg->can('x_foo'), 'explicitely removed disappeared'; + ok $pkg->can('x_bar'), 'not in explicit removal and still there'; + } +}