xref: /openbsd-src/gnu/usr.bin/perl/ext/IPC-Open3/t/fd.t (revision 50b7afb2c2c0993b0894d4e34bf857cb13ed9c80)
1#!./perl
2
3BEGIN {
4    if ($^O eq 'VMS') {
5        print "1..0 # Skip: needs porting, perhaps imitating Win32 mechanisms\n";
6	exit 0;
7    }
8    require "../../t/test.pl";
9}
10use strict;
11use warnings;
12
13plan 3;
14
15# [perl #76474]
16{
17  my $stderr = runperl(
18     switches => ['-MIPC::Open3', '-w'],
19     prog => 'open STDIN, q _Makefile_ or die $!; open3(q _<&0_, my $out, undef, $ENV{PERLEXE}, q _-e0_)',
20     stderr => 1,
21  );
22
23  is $stderr, '',
24   "dup STDOUT in a child process by using its file descriptor";
25}
26
27{
28  my $want = qr/\A# This Makefile is for the IPC::Open3 extension to perl\.\r?\z/;
29  open my $fh, '<', 'Makefile' or die "Can't open MAKEFILE: $!";
30  my $have = <$fh>;
31  chomp $have;
32  like($have, $want, 'No surprises from MakeMaker');
33  close $fh;
34
35  fresh_perl_like(<<'EOP',
36use IPC::Open3;
37open FOO, 'Makefile' or die $!;
38open3('<&' . fileno FOO, my $out, undef, $ENV{PERLEXE}, '-eprint scalar <STDIN>');
39print <$out>;
40EOP
41		  $want,
42		  undef,
43		  'Numeric file handles are duplicated correctly'
44      );
45}
46