Commit | Line | Data |
---|---|---|
3830cb7e | 1 | #!./perl -- # Perl Rules |
a0ed8b7b | 2 | |
0c24d268 | 3 | BEGIN { |
b49fc163 CB |
4 | if ($^O eq 'VMS') { |
5 | print "1..0 # Skip: needs porting, perhaps imitating Win32 mechanisms\n"; | |
6 | exit 0; | |
7 | } | |
0c24d268 FC |
8 | require "../../t/test.pl"; |
9 | } | |
a0ed8b7b FC |
10 | use strict; |
11 | use warnings; | |
12 | ||
9f3ee5ee | 13 | plan 3; |
a0ed8b7b | 14 | |
3830cb7e NC |
15 | my $file = 't/fd.t'; |
16 | ||
a0ed8b7b | 17 | # [perl #76474] |
45a1ce97 FC |
18 | { |
19 | my $stderr = runperl( | |
a0ed8b7b | 20 | switches => ['-MIPC::Open3', '-w'], |
3830cb7e | 21 | prog => "open STDIN, q _${file}_ or die \$!; open3(q _<&0_, my \$out, undef, \$ENV{PERLEXE}, q _-e0_)", |
a0ed8b7b | 22 | stderr => 1, |
45a1ce97 | 23 | ); |
a12c5011 NC |
24 | |
25 | is $stderr, '', | |
26 | "dup STDOUT in a child process by using its file descriptor"; | |
45a1ce97 | 27 | } |
9f3ee5ee NC |
28 | |
29 | { | |
3830cb7e NC |
30 | my $want = qr{\A#!\./perl -- # Perl Rules\r?\z}; |
31 | open my $fh, '<', $file or die "Can't open $file: $!"; | |
9f3ee5ee NC |
32 | my $have = <$fh>; |
33 | chomp $have; | |
3830cb7e | 34 | like($have, $want, 'We can find our test string'); |
9f3ee5ee NC |
35 | close $fh; |
36 | ||
3830cb7e | 37 | fresh_perl_like(<<"EOP", |
9f3ee5ee | 38 | use IPC::Open3; |
3830cb7e NC |
39 | open FOO, '$file' or die \$!; |
40 | open3('<&' . fileno FOO, my \$out, undef, \$ENV{PERLEXE}, '-eprint scalar <STDIN>'); | |
41 | print <\$out>; | |
9f3ee5ee NC |
42 | EOP |
43 | $want, | |
44 | undef, | |
45 | 'Numeric file handles are duplicated correctly' | |
46 | ); | |
47 | } |