xref: /openbsd-src/gnu/usr.bin/perl/dist/Safe/t/saferegexp.t (revision 91f110e064cd7c194e59e019b83bb7496c1c84d4)
1*91f110e0Safresh1#!perl -w
2*91f110e0Safresh1
3*91f110e0Safresh1BEGIN {
4*91f110e0Safresh1    require Config; import Config;
5*91f110e0Safresh1    if ($Config{'extensions'} !~ /\bOpcode\b/) {
6*91f110e0Safresh1        print "1..0\n";
7*91f110e0Safresh1        exit 0;
8*91f110e0Safresh1    }
9*91f110e0Safresh1}
10*91f110e0Safresh1
11*91f110e0Safresh1use Test::More tests => 3;
12*91f110e0Safresh1use Safe;
13*91f110e0Safresh1
14*91f110e0Safresh1my $c; my $r;
15*91f110e0Safresh1my $snippet = q{
16*91f110e0Safresh1    my $foo = qr/foo/;
17*91f110e0Safresh1    ref $foo;
18*91f110e0Safresh1};
19*91f110e0Safresh1$c = new Safe;
20*91f110e0Safresh1$r = $c->reval($snippet);
21*91f110e0Safresh1is( $r, "Safe::Root0::Regexp" );
22*91f110e0Safresh1$r or diag $@;
23*91f110e0Safresh1
24*91f110e0Safresh1# once more with the same compartment
25*91f110e0Safresh1# (where DESTROY has been cleaned up)
26*91f110e0Safresh1$r = $c->reval($snippet);
27*91f110e0Safresh1is( $r, "Safe::Root0::Regexp" );
28*91f110e0Safresh1$r or diag $@;
29*91f110e0Safresh1
30*91f110e0Safresh1# try with a new compartment
31*91f110e0Safresh1$c = new Safe;
32*91f110e0Safresh1$r = $c->reval($snippet);
33*91f110e0Safresh1is( $r, "Safe::Root1::Regexp" );
34*91f110e0Safresh1$r or diag $@;
35