Overeager visited-positions optimizations
[p5sagit/p5-mst-13.2.git] / t / lib / peek.t
index fd6e474..a90574f 100644 (file)
@@ -1,14 +1,28 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require Config; import Config;
+    if ($Config{'extensions'} !~ /\bPeek\b/) {
+        print "1..0 # Skip: Devel::Peek was not built\n";
+        exit 0;
+    }
+}
+
 use Devel::Peek;
 
 print "1..17\n";
 
 our $DEBUG = 0;
+open(SAVERR, ">&STDERR") or die "Can't dup STDERR: $!";
 
 sub do_test {
     my $pattern = pop;
     if (open(OUT,">peek$$")) {
-       open(STDERR,">&OUT");
+       open(STDERR, ">&OUT") or die "Can't dup OUT: $!";
        Dump($_[1]);
+       open(STDERR, ">&SAVERR") or die "Can't restore STDERR: $!";
        close(OUT);
        if (open(IN, "peek$$")) {
            local $/;
@@ -16,7 +30,7 @@ sub do_test {
            print $pattern, "\n" if $DEBUG;
            my $dump = <IN>;
            print $dump, "\n"    if $DEBUG;
-           print "not " unless $dump =~ /$pattern/m;
+           print "[$dump] vs [$pattern]\nnot " unless $dump =~ /$pattern/ms;
            print "ok $_[0]\n";
            close(IN);
        } else {
@@ -30,7 +44,7 @@ sub do_test {
 our   $a;
 our   $b;
 my    $c;
-local $d;
+local $d = 0;
 
 do_test( 1,
        $a = "foo",
@@ -46,7 +60,7 @@ do_test( 2,
         "bar",
 'SV = PV\\($ADDR\\) at $ADDR
   REFCNT = 1
-  FLAGS = \\(POK,READONLY,pPOK\\)
+  FLAGS = \\(.*POK,READONLY,pPOK\\)
   PV = $ADDR "bar"\\\0
   CUR = 3
   LEN = 4');
@@ -62,7 +76,7 @@ do_test( 4,
         456,
 'SV = IV\\($ADDR\\) at $ADDR
   REFCNT = 1
-  FLAGS = \\(IOK,READONLY,pIOK\\)
+  FLAGS = \\(.*IOK,READONLY,pIOK\\)
   IV = 456');
 
 do_test( 5,
@@ -96,7 +110,7 @@ do_test( 8,
         0xabcd,
 'SV = IV\\($ADDR\\) at $ADDR
   REFCNT = 1
-  FLAGS = \\(IOK,READONLY,pIOK,IsUV\\)
+  FLAGS = \\(.*IOK,READONLY,pIOK,IsUV\\)
   UV = 43981');
 
 do_test( 9,
@@ -190,10 +204,12 @@ do_test(13,
     ROOT = $ADDR
     XSUB = 0x0
     XSUBANY = 0
-    GVGV::GV = $ADDR\\t"main" :: "__ANON__"
-    FILE = ".+\\b(?i:peek\\.t)"
+    GVGV::GV = $ADDR\\t"main" :: "__ANON__[^"]*"
+    FILE = ".*\\b(?i:peek\\.t)"
     DEPTH = 0
-    FLAGS = 0x4
+(?:    MUTEXP = $ADDR
+    OWNER = $ADDR
+)?    FLAGS = 0x4
     PADLIST = $ADDR
     OUTSIDE = $ADDR \\(MAIN\\)');
 
@@ -204,7 +220,7 @@ do_test(14,
   FLAGS = \\(ROK\\)
   RV = $ADDR
   SV = PVCV\\($ADDR\\) at $ADDR
-    REFCNT = 3
+    REFCNT = (3|4)
     FLAGS = \\(\\)
     IV = 0
     NV = 0
@@ -214,13 +230,15 @@ do_test(14,
     XSUB = 0x0
     XSUBANY = 0
     GVGV::GV = $ADDR\\t"main" :: "do_test"
-    FILE = ".+\\b(?i:peek\\.t)"
+    FILE = ".*\\b(?i:peek\\.t)"
     DEPTH = 1
-    FLAGS = 0x0
+(?:    MUTEXP = $ADDR
+    OWNER = $ADDR
+)?    FLAGS = 0x0
     PADLIST = $ADDR
-      1\\. $ADDR \\("\\$pattern" 49-57\\)
-     12\\. $ADDR \\(FAKE "\\$DEBUG" 0-51\\)
-     13\\. $ADDR \\("\\$dump" 50-51\\)
+      \\d+\\. $ADDR \\("\\$pattern" \\d+-\\d+\\)
+     \\d+\\. $ADDR \\(FAKE "\\$DEBUG" 0-\\d+\\)
+     \\d+\\. $ADDR \\("\\$dump" \\d+-\\d+\\)
     OUTSIDE = $ADDR \\(MAIN\\)');
 
 do_test(15,
@@ -264,15 +282,13 @@ do_test(17,
        *a,
 'SV = PVGV\\($ADDR\\) at $ADDR
   REFCNT = 5
-  FLAGS = \\(GMG,SMG,MULTI\\)
+  FLAGS = \\(GMG,SMG,MULTI(?:,IN_PAD)?\\)
   IV = 0
   NV = 0
   MAGIC = $ADDR
     MG_VIRTUAL = &PL_vtbl_glob
     MG_TYPE = \'\\*\'
     MG_OBJ = $ADDR
-    MG_LEN = 1
-    MG_PTR = $ADDR "a"
   NAME = "a"
   NAMELEN = 1
   GvSTASH = $ADDR\\t"main"
@@ -286,11 +302,11 @@ do_test(17,
     CV = 0x0
     CVGEN = 0x0
     GPFLAGS = 0x0
-    LINE = 30
-    FILE = ".+\\b(?i:peek\\.t)"
-    FLAGS = 0x2
+    LINE = \\d+
+    FILE = ".*\\b(?i:peek\\.t)"
+    FLAGS = $ADDR
     EGV = $ADDR\\t"a"');
 
 END {
-  unlink("peek$$");
+  1 while unlink("peek$$");
 }