use Test::More;
use lib 't/lib';
-use VPIT::TestHelpers;
+use VPIT::TestHelpers 'run_perl';
-plan tests => 11 + 1 * 2 + 5 * 3;
+plan tests => 11 + 5 * 2 + 5 * 3;
{
my $desc = 'peephole optimization of conditionals';
}
{
+ my $base_desc = 'peephole optimization of infinite';
my %infinite_tests = (
- 'peephole optimization of infinite for loops (RT #64435)' => <<' TESTCASE',
+ "$base_desc for loops (RT #64435)" => <<' TESTCASE',
no autovivification;
my $ret = 0;
for (;;) {
}
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;
- my $stat = $ret & 255;
- $ret >>= 8;
- is $stat, 0, "$desc testcase did not crash";
- is $ret, 1, "$desc compiled fine";
+ 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";
+ }
}
}