This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Throw away uncleanable scopes when exiting a pseudo-forked process.
[perl5.git] / cpan / Memoize / t / errors.t
1 #!/usr/bin/perl
2
3 use lib '..';
4 use Memoize;
5 use Config;
6
7 $|=1;
8 print "1..11\n";
9
10 eval { memoize({}) };
11 print $@ ? "ok 1\n" : "not ok 1 # $@\n";
12
13 eval { memoize([]) };
14 print $@ ? "ok 2\n" : "not ok 2 # $@\n";
15
16 eval { my $x; memoize(\$x) };
17 print $@ ? "ok 3\n" : "not ok 3 # $@\n";
18
19 # 4--8
20 $n = 4;
21 my $dummyfile = './dummydb';
22 use Fcntl;
23 my %args = ( DB_File => [],
24              GDBM_File => [$dummyfile, 2, 0666],
25              ODBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666],
26              NDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666],
27              SDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666],
28            );
29 for $mod (qw(DB_File GDBM_File SDBM_File ODBM_File NDBM_File)) {
30   eval {
31     require "$mod.pm";
32     tie my %cache => $mod, @{$args{$mod}};
33     memoize(sub {}, LIST_CACHE => [HASH => \%cache ]);
34   };
35   print $@ =~ /can only store scalars/
36      || $@ =~ /Can't locate.*in \@INC/
37      || $@ =~ /Can't load '.*?' for module/ ? "ok $n\n" : "not ok $n # $@\n";
38   1 while unlink $dummyfile, "$dummyfile.dir", "$dummyfile.pag", "$dummyfile.db";
39   $n++;
40 }
41
42 # 9
43 eval { local $^W = 0;
44        memoize(sub {}, LIST_CACHE => ['TIE', 'WuggaWugga']) 
45      };
46 print $@ ? "ok 9\n" : "not ok 9 # $@\n";
47
48 # 10
49 eval { memoize(sub {}, LIST_CACHE => 'YOB GORGLE') };
50 print $@ ? "ok 10\n" : "not ok 10 # $@\n";
51
52 # 11
53 eval { memoize(sub {}, SCALAR_CACHE => ['YOB GORGLE']) };
54 print $@ ? "ok 11\n" : "not ok 11 # $@\n";
55