5 require_ok 'PublicInbox::OnDestroy';
7 my $od = PublicInbox::OnDestroy->new(sub { push @x, 'hi' });
8 is_deeply(\@x, [], 'not called, yet');
10 is_deeply(\@x, [ 'hi' ], 'no args works');
11 $od = PublicInbox::OnDestroy->new(sub { $x[0] = $_[0] }, 'bye');
12 is_deeply(\@x, [ 'hi' ], 'nothing changed while alive');
14 is_deeply(\@x, [ 'bye' ], 'arg passed');
15 $od = PublicInbox::OnDestroy->new(sub { @x = @_ }, qw(x y));
17 is_deeply(\@x, [ 'x', 'y' ], '2 args passed');
19 open my $tmp, '+>>', undef or BAIL_OUT $!;
21 $od = PublicInbox::OnDestroy->new(1, sub { print $tmp "$$ DESTROY\n" });
23 is(-s $tmp, 0, '$tmp is empty on pid mismatch');
24 $od = PublicInbox::OnDestroy->new($$, sub { $tmp = $$ });
26 is($tmp, $$, '$tmp set to $$ by callback');
28 if (my $nr = $ENV{TEST_LEAK_NR}) {
30 $od = PublicInbox::OnDestroy->new(sub { @x = @_ }, qw(x y));