X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FExporter.t;h=2fbfcfa43bae2830f5159b78fcfdcaf2f95fa4ce;hb=55f4245edad4e38b1869f0a6467a997a59257a0f;hp=d2a9289c61c54d9877c8b1d3bf24208a7d27ffe7;hpb=d7341064bc2472128b060451c0da8ce62db49d9d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Exporter.t b/lib/Exporter.t index d2a9289..2fbfcfa 100644 --- a/lib/Exporter.t +++ b/lib/Exporter.t @@ -1,8 +1,10 @@ -#!./perl +#!perl -w BEGIN { - chdir 't' if -d 't'; - @INC = '../lib'; + if( $ENV{PERL_CORE} ) { + chdir 't' if -d 't'; + @INC = '../lib'; + } } # Can't use Test::Simple/More, they depend on Exporter. @@ -21,7 +23,7 @@ sub ok ($;$) { } -print "1..24\n"; +print "1..28\n"; require Exporter; ok( 1, 'Exporter compiled' ); @@ -75,7 +77,7 @@ $seat = 'seat'; BEGIN {*is = \&Is}; sub Is { 'Is' }; -Exporter::export_ok_tags; +Exporter::export_ok_tags(); my %tags = map { $_ => 1 } map { @$_ } values %EXPORT_TAGS; my %exportok = map { $_ => 1 } @EXPORT_OK; @@ -102,7 +104,7 @@ my $got = eval {&lifejacket}; # Testing->import is called. ::ok( eval "defined &is", "Import a subroutine where exporter must create the typeglob" ); -my $got = eval "&is"; +$got = eval "&is"; ::ok ( $@ eq "", 'check we can call the imported autoloaded subroutine') or chomp ($@), print STDERR "# \$\@ is $@\n"; ::ok ( $got eq 'Is', 'and that it gave the correct result') @@ -178,3 +180,39 @@ BEGIN { ::ok( !$warnings, 'Unused variables can be exported without warning' ) || print "# $warnings\n"; +package Moving::Target; +@ISA = qw(Exporter); +@EXPORT_OK = qw (foo); + +sub foo {"This is foo"}; +sub bar {"This is bar"}; + +package Moving::Target::Test; + +Moving::Target->import ('foo'); + +::ok (foo() eq "This is foo", "imported foo before EXPORT_OK changed"); + +push @Moving::Target::EXPORT_OK, 'bar'; + +Moving::Target->import ('bar'); + +::ok (bar() eq "This is bar", "imported bar after EXPORT_OK changed"); + +package The::Import; + +use Exporter 'import'; + +eval { import() }; +::ok(\&import == \&Exporter::import, "imported the import routine"); + +@EXPORT = qw( wibble ); +sub wibble {return "wobble"}; + +package Use::The::Import; + +The::Import->import; + +my $val = eval { wibble() }; +::ok($val eq "wobble", "exported importer worked"); +