This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
TODO test for $AUTOLOAD with XS AUTOLOAD
[perl5.git] / ext / XS-APItest / t / peep.t
index 3db5812..bfcc9eb 100644 (file)
@@ -2,12 +2,10 @@
 
 use strict;
 use warnings;
-use Test::More tests => 9;
+use Test::More tests => 6;
 
 use XS::APItest;
 
-use Devel::Peek;
-
 my $record = XS::APItest::peep_record;
 my $rrecord = XS::APItest::rpeep_record;
 
@@ -22,14 +20,19 @@ is($record->[0], 'affe');
 is($rrecord->[0], 'affe');
 
 
-# peep got called for each root op of the branch
-$::moo = $::moo = 0;
+# A deep-enough nesting of conditionals defeats the deferring mechanism
+# and triggers recursion. Note that this test is sensitive to the details
+# rpeep: the main thing it is testing is that rpeep is called more than
+# peep, and that all branches are covered; the order of branch calling is
+# less important.
+
+my $code =  q[my ($a,$b); $a =];
+$code .= qq{ \$b ? "foo$_" :} for (1..10);
+$code .= qq{ "foo11" };
 XS::APItest::peep_enable;
-eval q[my $foo = $::moo ? q/x/ : q/y/];
+eval $code;
 XS::APItest::peep_disable;
 
-is(scalar @{ $record }, 1);
-is(scalar @{ $rrecord }, 2);
-is($record->[0], 'y');
-is($rrecord->[0], 'x');
-is($rrecord->[1], 'y');
+is_deeply($record,  [ "foo11" ]);
+is_deeply($rrecord, [
+    qw(foo1 foo2 foo3 foo4 foo5 foo6 foo10 foo9 foo8 foo7 foo11) ]);