X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Frunlevel.t;h=531b862fd87118727a9ef12961905f43ce12bf7b;hb=1c509eb921569425706e6fe39ea7cb2f11e99d1b;hp=e988ad9362a4c3ced165920b5e3859c1045ac082;hpb=8e8b254b29687c0b0e15d55690a01ac09a7f0f0c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/runlevel.t b/t/op/runlevel.t index e988ad9..531b862 100755 --- a/t/op/runlevel.t +++ b/t/op/runlevel.t @@ -7,9 +7,11 @@ ## chdir 't' if -d 't'; -unshift @INC, "../lib"; +@INC = '../lib'; $Is_VMS = $^O eq 'VMS'; $Is_MSWin32 = $^O eq 'MSWin32'; +$Is_NetWare = $^O eq 'NetWare'; +$Is_MacOS = $^O eq 'MacOS'; $ENV{PERL5LIB} = "../lib" unless $Is_VMS; $|=1; @@ -30,12 +32,16 @@ for (@prgs){ my($prog,$expected) = split(/\nEXPECT\n/, $_); open TEST, ">$tmpfile"; print TEST "$prog\n"; - close TEST; + close TEST or die "Could not close: $!"; my $results = $Is_VMS ? - `MCR $^X "-I[-.lib]" $switch $tmpfile 2>&1` : - $Is_MSWin32 ? - `.\\perl -I../lib $switch $tmpfile 2>&1` : - `./perl $switch $tmpfile 2>&1`; + `MCR $^X "-I[-.lib]" $switch $tmpfile 2>&1` : + $Is_MSWin32 ? + `.\\perl -I../lib $switch $tmpfile 2>&1` : + $Is_NetWare ? + `perl -I../lib $switch $tmpfile 2>&1` : + $Is_MacOS ? + `$^X -I::lib -MMac::err=unix $switch $tmpfile` : + `./perl $switch $tmpfile 2>&1`; my $status = $?; $results =~ s/\n+$//; # allow expected output to be written as if $prog is on STDIN @@ -176,11 +182,13 @@ print "bar reached\n"; EXPECT Can't "goto" out of a pseudo block at - line 2. ######## +%seen = (); sub sortfn { (split(/./, 'x'x10000))[0]; my (@y) = ( 4, 6, 5); @y = sort { $a <=> $b } @y; - print "sortfn ".join(', ', @y)."\n"; + my $t = "sortfn ".join(', ', @y)."\n"; + print $t if ($seen{$t}++ == 0); return $_[0] <=> $_[1]; } @x = ( 3, 2, 1 ); @@ -188,8 +196,6 @@ sub sortfn { print "---- ".join(', ', @x)."\n"; EXPECT sortfn 4, 5, 6 -sortfn 4, 5, 6 -sortfn 4, 5, 6 ---- 1, 2, 3 ######## @a = (3, 2, 1); @@ -306,6 +312,7 @@ $SIG{__DIE__} = sub { eval { die }; &{sub { eval 'die' }}(); sub foo { eval { die } } foo(); +{package rmb; sub{ eval{die} } ->() }; # check __ANON__ knows package EXPECT In DIE main|-|8|(eval) @@ -315,6 +322,9 @@ main|-|9|main::__ANON__ In DIE main|-|10|(eval) main|-|10|main::foo +In DIE +rmb|-|11|(eval) +rmb|-|11|rmb::__ANON__ ######## package TEST; @@ -349,3 +359,51 @@ A 1 bar B 2 bar +######## +sub n { 0 } +sub f { my $x = shift; d(); } +f(n()); +f(); + +sub d { + my $i = 0; my @a; + while (do { { package DB; @a = caller($i++) } } ) { + @a = @DB::args; + for (@a) { print "$_\n"; $_ = '' } + } +} +EXPECT +0 +######## +sub TIEHANDLE { bless {} } +sub PRINT { next } + +tie *STDERR, ''; +{ map ++$_, 1 } + +EXPECT +Can't "next" outside a loop block at - line 2. +######## +sub TIEHANDLE { bless {} } +sub PRINT { print "[TIE] $_[1]" } + +tie *STDERR, ''; +die "DIE\n"; + +EXPECT +[TIE] DIE +######## +sub TIEHANDLE { bless {} } +sub PRINT { + (split(/./, 'x'x10000))[0]; + eval('die("test\n")'); + warn "[TIE] $_[1]"; +} +open OLDERR, '>&STDERR'; +tie *STDERR, ''; + +use warnings FATAL => qw(uninitialized); +print undef; + +EXPECT +[TIE] Use of uninitialized value in print at - line 11.