39 lines
828 B
Perl
39 lines
828 B
Perl
use v5.36;
|
|
use Test::More;
|
|
use IO::Socket qw/AF_UNIX SOCK_STREAM PF_UNSPEC/;
|
|
|
|
BEGIN { use_ok 'FU::Util', qw/fdpass_send fdpass_recv/ }
|
|
|
|
my ($rd, $wr) = IO::Socket->socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC);
|
|
|
|
is $wr->syswrite("abc", 3), 3;
|
|
|
|
my ($fd, $buf) = fdpass_recv fileno($rd), 10;
|
|
ok !defined $fd;
|
|
is $buf, 'abc';
|
|
|
|
is fdpass_send(fileno($wr), fileno($wr), 'def'), 3;
|
|
|
|
($fd, $buf) = fdpass_recv fileno($rd), 50;
|
|
ok $fd > 0;
|
|
is $buf, 'def';
|
|
|
|
# Check that $fd is indeed an alias for $wr
|
|
my $nwr = IO::Socket->new_from_fd($fd, 'w');
|
|
is $nwr->syswrite('hij'), 3;
|
|
is $rd->sysread($buf, 20), 3;
|
|
is $buf, 'hij';
|
|
|
|
$nwr->close;
|
|
$wr->close;
|
|
|
|
($fd, $buf) = fdpass_recv fileno($rd), 10;
|
|
ok !defined $fd;
|
|
is $buf, '';
|
|
|
|
($fd, $buf) = fdpass_recv -1, 10;
|
|
ok !defined $fd;
|
|
ok !defined $buf;
|
|
is fdpass_send(-1, 3, 'x'), -1;
|
|
|
|
done_testing;
|