File: mock.t

package info (click to toggle)
libproc-fork-perl 0.807-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 136 kB
  • sloc: perl: 165; makefile: 2
file content (36 lines) | stat: -rw-r--r-- 1,163 bytes parent folder | download | duplicates (3)
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
use strict; use warnings;

my $i = 1;
sub ok { print 'not ' x !$_[0], "ok $i - $_[1]\n"; ++$i; $_[0] }
sub diag { s/^/# /mg, print for @_; () }
sub is { ok( $_[0] eq $_[1], $_[2] ) or diag "expected: $_[1]\n", "got:      $_[0]\n" }

our $forkres; BEGIN { *CORE::GLOBAL::fork = sub { $forkres } }

use Proc::Fork;

print "1..12\n";

# basic functionality
{ local $forkres = 1; parent { ok( 1, 'parent code executes' )    };          }
{ local $forkres = 0; child  { ok( 1, 'child code executes'  )    };          }
{                     error  { ok( 1, 'error code executes'  )    };          }
{                     retry  { ok( 1, 'retry code executes'  ); 0 } error {}; }

# pid gets passed in?
{ local $forkres = 42; parent { is( shift, 42, 'pid is passed to parent block' ) }; }

# error catching attempts
eval { parent {} "oops" };
ok( /^Garbage in Proc::Fork setup \(after \w+ clause\)/, 'syntax error catcher fired' ) or diag "$_\n" for "$@";

# test retry logic
my $expect_try;
retry {
	++$expect_try;
	is( $_[ 0 ], $expect_try, "retry attempt $expect_try signalled" );
	return $_[ 0 ] < 5; 
}
error {
	is( $expect_try, 5, 'abort after 5th attempt' );
};