#!perl -w
use Test::More;
use IPC::Run3;
use strict;
my ( $in, $out, $err ) = @_;
sub leaky
{
my ($what) = @_;
my $before_fd = IPC::Run3::_max_fd();
my $desc = join ",", map {
defined $_
? ref $_
? ( $_ == \undef )
? "\\undef"
: ref $_
: "'$_'"
: 'undef';
} @$what;
run3 [$^X, '-e1' ], @$what;
my $after_fd = IPC::Run3::_max_fd();
# on a sane system we'd expect == below,
# but apparently Darwin 7.2 is stranger than fiction
ok($after_fd <= $before_fd, "run3 [...],$desc");
}
my @tests = (
[],
[ \undef ],
[ \$in ],
[ $0 ],
[ undef, \$out ],
[ undef, undef, \$err ],
[ undef, \$out, \$err ],
[ \undef, \$out, \$err ],
[ \$in, \$out, \$err ],
[ $0, \$out, \$err ],
);
plan tests => 1+@tests;
## Force run3() to open some temp files.
run3 [$^X, '-e1' ], \$in, \$out, \$err;
ok(1, "open some temp files");
leaky($_) for @tests;
syntax highlighted by Code2HTML, v. 0.9.1