#!perl use strict; use warnings FATAL=>'all'; use Test (); Test::plan tests=>47; sub t { my $p=$_[0]; no strict 'refs'; Test::ok defined &{$p."::ok"} && \&{$p."::ok"}==\&Test::ok, 1, "$p - ok"; Test::ok defined &{$p."::need"} && \&{$p."::need"}==\&Apache::Test::need, 1, "$p - need"; Test::ok defined &{$p."::plan"} && \&{$p."::plan"}==\&Apache::Test::plan, 1, "$p - plan"; } sub tm { my $p=$_[0]; no strict 'refs'; Test::ok defined &{$p."::ok"} && \&{$p."::ok"}==\&Test::More::ok, 1, "$p - ok"; Test::ok defined &{$p."::need"} && \&{$p."::need"}==\&Apache::Test::need, 1, "$p - need"; Test::ok defined &{$p."::plan"} && \&{$p."::plan"}==\&Apache::Test::plan, 1, "$p - plan"; } {package X0; use Apache::Test;} {package Y0; use Apache::Test qw/-withtestmore/;} t 'X0'; tm 'Y0'; {package X1; use Apache::Test qw/:DEFAULT/;} {package Y1; use Apache::Test qw/-withtestmore :DEFAULT/;} t 'X1'; tm 'Y1'; {package X2; use Apache::Test qw/!:DEFAULT/;} {package Y2; use Apache::Test qw/-withtestmore !:DEFAULT/;} Test::ok !defined &X2::ok, 1, '!defined &X2::ok'; Test::ok !defined &X2::need, 1, '!defined &X2::need'; Test::ok !defined &X2::plan, 1, '!defined &X2::plan'; Test::ok !defined &Y2::ok, 1, '!defined &Y2::ok'; Test::ok !defined &Y2::need, 1, '!defined &Y2::need'; Test::ok !defined &Y2::plan, 1, '!defined &Y2::plan'; {package X3; use Apache::Test qw/plan/;} {package Y3; use Apache::Test qw/-withtestmore plan/;} Test::ok !defined &X3::ok, 1, '!defined &X3::ok'; Test::ok !defined &X3::need, 1, '!defined &X3::need'; Test::ok defined &X3::plan && \&X3::plan==\&Apache::Test::plan, 1, "X3 - plan"; Test::ok !defined &Y3::ok, 1, '!defined &Y3::ok'; Test::ok !defined &Y3::need, 1, '!defined &Y3::need'; Test::ok defined &Y3::plan && \&Y3::plan==\&Apache::Test::plan, 1, "Y3 - plan"; {package X4; use Apache::Test qw/need/;} {package Y4; use Apache::Test qw/-withtestmore need/;} Test::ok !defined &X4::ok, 1, '!defined &X4::ok'; Test::ok defined &X4::need && \&X4::need==\&Apache::Test::need, 1, "X4 - need"; Test::ok !defined &X4::plan, 1, '!defined &X4::plan'; Test::ok !defined &Y4::ok, 1, '!defined &Y4::ok'; Test::ok defined &Y4::need && \&Y4::need==\&Apache::Test::need, 1, "Y4 - need"; Test::ok !defined &Y4::plan, 1, '!defined &Y4::plan'; {package X5; use Apache::Test qw/ok/;} {package Y5; use Apache::Test qw/-withtestmore ok/;} Test::ok defined &X5::ok && \&X5::ok==\&Test::ok, 1, "X5 - ok"; Test::ok !defined &X5::need, 1, '!defined &X5::need'; Test::ok !defined &X5::plan, 1, '!defined &X5::plan'; Test::ok defined &Y5::ok && \&Y5::ok==\&Test::More::ok, 1, "Y5 - ok"; Test::ok !defined &Y5::need, 1, '!defined &Y5::need'; Test::ok !defined &Y5::plan, 1, '!defined &Y5::plan'; {package X6; use Apache::Test qw/ok need/;} {package Y6; use Apache::Test qw/-withtestmore ok need/;} Test::ok defined &X6::ok && \&X6::ok==\&Test::ok, 1, "X6 - ok"; Test::ok defined &X6::need && \&X6::need==\&Apache::Test::need, 1, "X6 - need"; Test::ok !defined &X6::plan, 1, '!defined &X6::plan'; Test::ok defined &Y6::ok && \&Y6::ok==\&Test::More::ok, 1, "Y6 - ok"; Test::ok defined &Y6::need && \&Y6::need==\&Apache::Test::need, 1, "Y6 - need"; Test::ok !defined &Y6::plan, 1, '!defined &Y6::plan'; my $warning; { local $SIG{__WARN__}=sub {$warning=join '', @_}; eval <<'EVAL'; package Z0; use Apache::Test qw/:withtestmore/; EVAL } Test::ok $warning, qr/^Ignoring import spec :withtestmore at/, "Ignore import warning"; undef $warning; { local $SIG{__WARN__}=sub {$warning=join '', @_}; eval <<'EVAL'; package X0; use Apache::Test qw/-withtestmore/; EVAL } Test::ok $warning, qr/^Ignoring -withtestmore due to a previous call /, "Ignore -withtestmore warning"; use Config (); my $pio=$Config::Config{useperlio} ? '' : 'need perlio'; my $output; Test::skip $pio, sub { my @res; { local $Test::ntest=-19; local $Test::planned=-42; package Y2; # uses Apache::Test qw/-withtestmore !:DEFAULT/ # so nothing is exported local *STDOUT; open STDOUT, '>', \$output; { # suppress an 'uninitialized' warning in older perl versions local $SIG{__WARN__}=sub { warn $_[0] unless $_[0]=~m!uninitialized\svalue\sin\sopen\b.+ Test/Builder\.pm!x; }; Apache::Test::plan tests=>17; } Test::More::isnt "hugo", "erwin", "hugo is not erwin"; @res=($Test::ntest, $Test::planned); Test::Builder->new->reset; } return "@res"; }, '-19 -42', '$Test::ntest, $Test::planned did not change'; Test::skip $pio, $output=~/^1\.\.17$/m; Test::skip $pio, $output=~/^ok 1 - hugo is not erwin$/m;