Server IP : 162.240.98.243 / Your IP : 3.147.84.169 Web Server : Apache System : Linux server.bti.yaw.mybluehostin.me 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : btiyawmy ( 1003) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/perl-Test-Simple-0.98/t/subtest/ |
Upload File : |
#!/usr/bin/perl -w use strict; use warnings; use Config; use IO::Pipe; use Test::Builder; use Test::More; my $Can_Fork = $Config{d_fork} || (($^O eq 'MSWin32' || $^O eq 'NetWare') and $Config{useithreads} and $Config{ccflags} =~ /-DPERL_IMPLICIT_SYS/ ); if( !$Can_Fork ) { plan 'skip_all' => "This system cannot fork"; } else { plan 'tests' => 1; } subtest 'fork within subtest' => sub { plan tests => 2; my $pipe = IO::Pipe->new; my $pid = fork; defined $pid or plan skip_all => "Fork not working"; if ($pid) { $pipe->reader; my $child_output = do { local $/ ; <$pipe> }; waitpid $pid, 0; is $?, 0, 'child exit status'; like $child_output, qr/^[\s#]+Child Done\s*\z/, 'child output'; } else { $pipe->writer; # Force all T::B output into the pipe, for the parent # builder as well as the current subtest builder. no warnings 'redefine'; *Test::Builder::output = sub { $pipe }; *Test::Builder::failure_output = sub { $pipe }; *Test::Builder::todo_output = sub { $pipe }; diag 'Child Done'; exit 0; } };