This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Typos and nits in pods
[perl5.git] / t / comp / retainedlines.t
index 9d1b40e..9a2a192 100644 (file)
@@ -2,21 +2,51 @@
 
 # Check that lines from eval are correctly retained by the debugger
 
-BEGIN {
-    require "./test.pl";
-}
-
 # Uncomment this for testing, but don't leave it in for "production", as
 # we've not yet verified that use works.
 # use strict;
 
-plan (tests => 65);
+print "1..72\n";
+my $test = 0;
+
+sub failed {
+    my ($got, $expected, $name) = @_;
+
+    print "not ok $test - $name\n";
+    my @caller = caller(1);
+    print "# Failed test at $caller[1] line $caller[2]\n";
+    if (defined $got) {
+       print "# Got '$got'\n";
+    } else {
+       print "# Got undef\n";
+    }
+    print "# Expected $expected\n";
+    return;
+}
+
+sub is {
+    my ($got, $expect, $name) = @_;
+    $test = $test + 1;
+    if (defined $expect) {
+       if (defined $got && $got eq $expect) {
+           print "ok $test - $name\n";
+           return 1;
+       }
+       failed($got, "'$expect'", $name);
+    } else {
+       if (!defined $got) {
+           print "ok $test - $name\n";
+           return 1;
+       }
+       failed($got, 'undef', $name);
+    }
+}
 
 $^P = 0xA;
 
 my @before = grep { /eval/ } keys %::;
 
-is (@before, 0, "No evals");
+is ((scalar @before), 0, "No evals");
 
 my %seen;
 
@@ -27,11 +57,12 @@ sub check_retained_lines {
 
     my @keys = grep {!$seen{$_}} grep { /eval/ } keys %::;
 
-    is (@keys, 1, "1 new eval");
+    is ((scalar @keys), 1, "1 new eval");
 
     my @got_lines = @{$::{$keys[0]}};
 
-    is (@got_lines, @expect_lines, "Right number of lines for $name");
+    is ((scalar @got_lines),
+       (scalar @expect_lines), "Right number of lines for $name");
 
     for (0..$#expect_lines) {
        is ($got_lines[$_], $expect_lines[$_], "Line $_ is correct");
@@ -65,7 +96,7 @@ for my $sep (' ', "\0") {
   eval $prog and die;
 
   is (eval "$name()", "This is $name", "Subroutine was compiled, despite error")
-    or diag $@;
+    or print STDERR "# $@\n";
 
   check_retained_lines($prog,
                       'eval that defines subroutine but has syntax error');
@@ -85,7 +116,7 @@ foreach my $flags (0x0, 0x800, 0x1000, 0x1800) {
     } else {
        my @after = grep { /eval/ } keys %::;
 
-       is (@after, 0 + keys %seen,
+       is (scalar @after, 0 + keys %seen,
            "evals that don't define subroutines are correctly cleaned up");
     }
 
@@ -96,7 +127,24 @@ foreach my $flags (0x0, 0x800, 0x1000, 0x1800) {
     } else {
        my @after = grep { /eval/ } keys %::;
 
-       is (@after, 0 + keys %seen,
+       is (scalar @after, 0 + keys %seen,
            "evals that fail are correctly cleaned up");
     }
 }
+
+# BEGIN blocks that die
+for (0xA, 0) {
+  local $^P = $_;
+
+  eval (my $prog = "BEGIN{die}\n");
+
+  if ($_) {
+    check_retained_lines($prog, 'eval that defines BEGIN that dies');
+  }
+  else {
+    my @after = grep { /eval/ } keys %::;
+
+    is (scalar @after, 0 + keys %seen,
+       "evals with BEGIN{die} are correctly cleaned up");
+  }
+}