summaryrefslogtreecommitdiff
path: root/cpan/Test-Simple/t/Builder/fork_with_new_stdout.t
blob: e38c1d08cbce0f19774df21293c25618242e1ec7 (plain)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!perl -w
use strict;
use warnings;
use IO::Pipe;
use Test::Builder;
use Config;

my $b = Test::Builder->new;
$b->reset;

my $Can_Fork = $Config{d_fork} ||
               (($^O eq 'MSWin32' || $^O eq 'NetWare') and
                $Config{useithreads} and
                $Config{ccflags} =~ /-DPERL_IMPLICIT_SYS/
               );

if( !$Can_Fork ) {
    $b->plan('skip_all' => "This system cannot fork");
}
else {
    $b->plan('tests' => 2);
}

my $pipe = IO::Pipe->new;
if ( my $pid = fork ) {
  $pipe->reader;
  $b->ok((<$pipe> =~ /FROM CHILD: ok 1/), "ok 1 from child");
  $b->ok((<$pipe> =~ /FROM CHILD: 1\.\.1/), "1..1 from child");
  waitpid($pid, 0);
}
else {
  $pipe->writer;
  my $pipe_fd = $pipe->fileno;
  close STDOUT;
  open(STDOUT, ">&$pipe_fd");
  my $b = Test::Builder->new;
  $b->reset;
  $b->no_plan;
  $b->ok(1);
} 


=pod
#actual
1..2
ok 1
1..1
ok 1
ok 2
#expected
1..2
ok 1
ok 2
=cut