xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/fork_first.t (revision f3efcd0145415b7d44d9da97e0ad5c21b186ac61)
1*f3efcd01Safresh1use Test2::Tools::Tiny;
2*f3efcd01Safresh1use strict;
3*f3efcd01Safresh1use warnings;
4*f3efcd01Safresh1
5*f3efcd01Safresh1use Test2::IPC;
6*f3efcd01Safresh1use Test2::Util qw/CAN_THREAD CAN_REALLY_FORK/;
7*f3efcd01Safresh1
8*f3efcd01Safresh1skip_all 'No IPC' unless CAN_REALLY_FORK || CAN_THREAD;
9*f3efcd01Safresh1
10*f3efcd01Safresh1if (CAN_REALLY_FORK) {
11*f3efcd01Safresh1    my $pid = fork;
12*f3efcd01Safresh1    die "Failed to fork: $!" unless defined $pid;
13*f3efcd01Safresh1    if ($pid) {
14*f3efcd01Safresh1        waitpid($pid, 0)
15*f3efcd01Safresh1    }
16*f3efcd01Safresh1    else {
17*f3efcd01Safresh1        ok(1, "Pass fork");
18*f3efcd01Safresh1        exit 0;
19*f3efcd01Safresh1    }
20*f3efcd01Safresh1}
21*f3efcd01Safresh1
22*f3efcd01Safresh1if (CAN_THREAD) {
23*f3efcd01Safresh1    require threads;
24*f3efcd01Safresh1    my $thread = threads->create(
25*f3efcd01Safresh1        sub {
26*f3efcd01Safresh1            ok(1, "Pass thread");
27*f3efcd01Safresh1        }
28*f3efcd01Safresh1    );
29*f3efcd01Safresh1
30*f3efcd01Safresh1    $thread->join;
31*f3efcd01Safresh1}
32*f3efcd01Safresh1
33*f3efcd01Safresh1done_testing;
34