Remove incorrect SKIP for 5.8.1
[p5sagit/namespace-clean.git] / t / 05-explicit-cleanee.t
CommitLineData
fcfe7810 1use warnings;
2use strict;
3
726710b6 4use lib 't/lib';
8de3b21e 5use Test::More tests => 2019;
fcfe7810 6
7use_ok('CleaneeTarget');
8
9ok CleaneeTarget->can('IGNORED'), 'symbol in exception list still there';
10ok CleaneeTarget->can('NOTAWAY'), 'symbol after import call still there';
11ok !CleaneeTarget->can('AWAY'), 'normal symbol has disappeared';
12
13ok !CleaneeTarget->can('x_foo'), 'explicitely removed disappeared (1/2)';
14ok CleaneeTarget->can('x_bar'), 'not in explicit removal and still there';
15ok !CleaneeTarget->can('x_baz'), 'explicitely removed disappeared (2/2)';
16
17ok !CleaneeTarget->can('d_foo'), 'directly removed disappeared (1/2)';
18ok CleaneeTarget->can('d_bar'), 'not in direct removal and still there';
19ok !CleaneeTarget->can('d_baz'), 'directly removed disappeared (2/2)';
20
21my @values = qw( 23 27 17 XFOO XBAR XBAZ 7 8 9 );
22is(CleaneeTarget->summary->[ $_ ], $values[ $_ ], sprintf('testing sub in cleanee (%d/%d)', $_ + 1, scalar @values))
23 for 0 .. $#values;
8de3b21e 24
25
26# some torture
bc62b4f7 27{
8de3b21e 28 local @INC = @INC;
29 my @code;
30 unshift @INC, sub {
31
32 if ($_[1] =~ /CleaneeTarget\/No(\d+)/) {
33 my @code = (
34 "package CleaneeTarget::No${1};",
35 "sub x_foo { 'XFOO' }",
36 "sub x_bar { 'XBAR' }",
37
38 "use CleaneeBridgeExplicit;",
39
40 "1;",
41 );
42
43 return sub { return 0 unless @code; $_ = shift @code; 1; }
44 }
45 else {
46 return ();
47 }
48 };
49
50 for (1..1000) {
51 my $pkg = "CleaneeTarget::No${_}";
52
bc62b4f7 53 require "CleaneeTarget/No${_}.pm";
8de3b21e 54
55 ok !$pkg->can('x_foo'), 'explicitely removed disappeared';
56 ok $pkg->can('x_bar'), 'not in explicit removal and still there';
57 }
58}