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 / expfile.t
CommitLineData
a0cb3900
JH
1#!/usr/bin/perl
2
5189e6fe 3use lib '..';
a0cb3900
JH
4use Memoize;
5
6my $n = 0;
484fdf61 7$|=1;
a0cb3900
JH
8
9
10if (-e '.fast') {
11 print "1..0\n";
12 exit 0;
13}
14
899dc88a 15print "1..12\n";
484fdf61 16# (1)
a0cb3900
JH
17++$n; print "ok $n\n";
18
19my $READFILE_CALLS = 0;
20my $FILE = './TESTFILE';
21
22sub writefile {
23 my $FILE = shift;
24 open F, "> $FILE" or die "Couldn't write temporary file $FILE: $!";
25 print F scalar(localtime), "\n";
26 close F;
27}
28
29sub readfile {
30 $READFILE_CALLS++;
31 my $FILE = shift;
5189e6fe 32 open F, "< $FILE" or die "Couldn't write temporary file $FILE: $!";
a0cb3900
JH
33 my $data = <F>;
34 close F;
35 $data;
36}
37
899dc88a 38require Memoize::ExpireFile;
484fdf61 39# (2)
899dc88a
JH
40++$n; print "ok $n\n";
41
42tie my %cache => 'Memoize::ExpireFile';
a0cb3900 43memoize 'readfile',
899dc88a 44 SCALAR_CACHE => [HASH => \%cache],
a0cb3900
JH
45 LIST_CACHE => 'FAULT'
46 ;
47
484fdf61 48# (3)
a0cb3900
JH
49++$n; print "ok $n\n";
50
484fdf61 51# (4)
a0cb3900
JH
52writefile($FILE);
53++$n; print "ok $n\n";
484fdf61 54sleep 4;
a0cb3900 55
484fdf61 56# (5-6)
a0cb3900
JH
57my $t1 = readfile($FILE);
58++$n; print "ok $n\n";
59++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
60
484fdf61 61# (7-9)
a0cb3900 62my $t2 = readfile($FILE);
484fdf61 63++$n; print "ok $n\n";
a0cb3900
JH
64++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
65++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n");
66
484fdf61
JH
67# (10-12)
68sleep 4;
a0cb3900
JH
69writefile($FILE);
70my $t3 = readfile($FILE);
71++$n; print "ok $n\n";
72++$n; print ((($READFILE_CALLS == 2) ? '' : 'not '), "ok $n\n");
73++$n; print ((($t1 ne $t3) ? '' : 'not '), "ok $n\n");
74
899dc88a 75END { 1 while unlink $FILE }