blob: bbd49e566c070443438540454d5345a5a2d28de9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package t::Eval;
use warnings;
use strict;
use Test::More;
sub _ok_no_eval() {
my $lastsub = "";
my $i = 0;
while(1) {
my @c = caller($i);
unless(@c) {
ok 0;
diag "failed to find main program in stack trace";
return;
}
my $sub = $c[3];
if($sub eq "main::eval_test") {
ok 1;
return;
}
my $type = $sub ne "(eval)" ? "subroutine" :
$c[7] ? "require" :
defined($c[6]) ? "string eval" : "block eval";
if($type =~ /eval/ && !($lastsub eq "t::Eval::BEGIN" &&
$type eq "block eval")) {
ok 0;
diag "have $type between module and main program";
return;
}
$lastsub = $sub;
$i++;
}
}
BEGIN { _ok_no_eval(); }
_ok_no_eval();
sub import { _ok_no_eval(); }
1;
|