From: Nicholas Clark Date: Sat, 29 Nov 2003 20:53:23 +0000 (+0000) Subject: Integrate if.pm 0.0401 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2f761939c78ba722e65a7f4b11072697cd8b1848;p=p5sagit%2Fp5-mst-13.2.git Integrate if.pm 0.0401 Needed to edit the test file as t/TEST can't cope with extra output lines as produced by 0.0401's if.t p4raw-id: //depot/perl@21814 --- diff --git a/lib/if.pm b/lib/if.pm index 9e140c3..700149f 100644 --- a/lib/if.pm +++ b/lib/if.pm @@ -1,6 +1,6 @@ package if; -$VERSION = '0.04'; +$VERSION = '0.0401'; sub work { my $method = shift() ? 'import' : 'unimport'; @@ -8,8 +8,7 @@ sub work { my $p = $_[0]; # PACKAGE (my $file = "$p.pm") =~ s!::!/!g; - require $file; - + require $file; # Works even if $_[0] is a keyword (like open) my $m = $p->can($method); goto &$m if $m; } diff --git a/lib/if.t b/lib/if.t index 61cc4b2..d17ff51 100644 --- a/lib/if.t +++ b/lib/if.t @@ -1,15 +1,26 @@ #!./perl BEGIN { - chdir 't' if -d 't'; - @INC = '../lib'; + chdir 't' and @INC = '../lib' if -f 't/TEST'; } -use Test::More tests => 6; +my $t = 1; +print "1..5\n"; +sub ok { + print "not " unless shift; + print "ok $t # ", shift, "\n"; + $t++; +} my $v_plus = $] + 1; my $v_minus = $] - 1; +unless (eval 'use open ":std"; 1') { + # pretend that open.pm is present + $INC{'open.pm'} = 'open.pm'; + eval 'sub open::foo{}'; # Just in case... +} + ok( eval "use if ($v_minus > \$]), strict => 'subs'; \${'f'} = 12" eq 12, '"use if" with a false condition, fake pragma'); @@ -24,8 +35,7 @@ ok( (not defined eval "use if ($v_plus > \$]), strict => 'refs'; \${'f'} = 12" and $@ =~ /while "strict refs" in use/), '"use if" with a true condition and a pragma'); -ok( eval "use if 1, Cwd; cwd() || 1;", - '"use if" with a true condition, module, no arguments, exports'); - -ok( eval "use if qw/ 1 if 1 strict subs /; \${'f'} = 12" eq 12, - '"use if" with a module named after keyword'); +# Old version had problems with the module name `open', which is a keyword too +# Use 'open' =>, since pre-5.6.0 could interpret differently +ok( (eval "use if ($v_plus > \$]), 'open' => IN => ':crlf'; 12" || 0) eq 12, + '"use if" with open');