Reinstate #10725 (with probe for alarm()).
Jarkko Hietaniemi [Wed, 20 Jun 2001 13:57:27 +0000 (13:57 +0000)]
p4raw-id: //depot/perl@10751

t/op/study.t

index ea3b366..a7f24f6 100755 (executable)
@@ -2,7 +2,7 @@
 
 # $RCSfile: study.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:30 $
 
-print "1..24\n";
+print "1..26\n";
 
 $x = "abc\ndef\n";
 study($x);
@@ -67,3 +67,33 @@ if (/^$_$/) {print "ok 23\n";} else {print "not ok 23\n";}
 
 $* = 1;                # test 3 only tested the optimized version--this one is for real
 if ("ab\ncd\n" =~ /^cd/) {print "ok 24\n";} else {print "not ok 24\n";}
+
+# [ID 20010618.006] these two may loop
+{
+    use Config;
+    if ($Config{d_alarm}) {
+       local $SIG{ALRM} = sub { die "timeout\n" };
+       $_ = 'FGF';
+       study;
+       my $ok = eval { alarm(2); my $match = /G.F$/; alarm(0); !$match };
+       if ($ok && !$@) {
+           print "ok 25\n";
+       } elsif ($@) {
+           print "not ok 25\t# $@";
+       } else {
+           print "not ok 25\t# should not match\n";
+       }
+       $ok = eval { alarm(2); my $match = /[F]F$/; alarm(0); !$match };
+       if ($ok && !$@) {
+           print "ok 26\n";
+       } elsif ($@) {
+           print "not ok 26\t# $@";
+       } else {
+           print "not ok 26\t# should not match\n";
+       }
+    } else {
+       for (25..26) {
+           print "ok $_ # Skip: no alarm\n";
+        }
+    }
+}