X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F43-peep.t;h=2499656584a67793510fc50bd8b8ea0a502156be;hb=HEAD;hp=5050821837fb71cb464548316546ee4e139beeb3;hpb=6bc99454a8284978b14854642fac0123c77bac45;p=perl%2Fmodules%2Fautovivification.git diff --git a/t/43-peep.t b/t/43-peep.t index 5050821..2499656 100644 --- a/t/43-peep.t +++ b/t/43-peep.t @@ -1,9 +1,14 @@ -#!perl -T +#!perl use strict; use warnings; -use Test::More tests => 11 + 6 * 3; +use Test::More; + +use lib 't/lib'; +use VPIT::TestHelpers 'run_perl'; + +plan tests => 11 + 5 * 2 + 5 * 3; { my $desc = 'peephole optimization of conditionals'; @@ -108,26 +113,60 @@ use Test::More tests => 11 + 6 * 3; } { - my $desc = 'peephole optimization of empty loops (RT #64435)'; - my $x; - - local $@; - my $code = eval <<' TESTCASE'; - no autovivification; - sub { + my $base_desc = 'peephole optimization of infinite'; + my %infinite_tests = ( + "$base_desc for loops (RT #64435)" => <<' TESTCASE', + no autovivification; my $ret = 0; for (;;) { ++$ret; - return $ret; + exit $ret; } - return $ret; + exit $ret; + TESTCASE + "$base_desc while loops" => <<' TESTCASE', + no autovivification; + my $ret = 0; + while (1) { + ++$ret; + exit $ret; + } + exit $ret; + TESTCASE + "$base_desc postfix while (RT #99458)" => <<' TESTCASE', + no autovivification; + my $ret = 0; + ++$ret && exit $ret while 1; + exit $ret; + TESTCASE + "$base_desc until loops" => <<' TESTCASE', + no autovivification; + my $ret = 0; + until (0) { + ++$ret; + exit $ret; + } + exit $ret; + TESTCASE + "$base_desc postfix until" => <<' TESTCASE', + no autovivification; + my $ret = 0; + ++$ret && exit $ret until 0; + exit $ret; + TESTCASE + ); + + for my $desc (keys %infinite_tests) { + my $code = $infinite_tests{$desc}; + my $ret = run_perl $code; + SKIP: { + skip RUN_PERL_FAILED() => 2 unless defined $ret; + my $stat = $ret & 255; + $ret >>= 8; + is $stat, 0, "$desc testcase did not crash"; + is $ret, 1, "$desc compiled fine"; } - TESTCASE - is $@, '', "$desc compiled fine"; - - my $ret = $code->(); - is_deeply $x, undef, "$desc did not autovivify"; - is $ret, 1, "$desc returned 1"; + } } {