1#!/usr/bin/perl 2 3use v5; 4use strict; 5use warnings; 6 7use Test::More; 8 9use IO::Socket::IP; 10use Socket 1.95 qw( 11 PF_INET SOCK_STREAM IPPROTO_TCP pack_sockaddr_in INADDR_ANY 12 AI_PASSIVE 13); 14 15my $AI_ADDRCONFIG = eval { Socket::AI_ADDRCONFIG() } || 0; 16 17my @gai_args; 18my @gai_rets; 19 20no strict 'refs'; 21no warnings 'redefine'; 22 23*{"IO::Socket::IP::getaddrinfo"} = sub { 24 push @gai_args, [ @_ ]; 25 return @{ shift @gai_rets }; 26}; 27 28@gai_rets = ( 29 [ "Service unknown" ], 30 [ "", { 31 family => PF_INET, 32 socktype => SOCK_STREAM, 33 protocol => IPPROTO_TCP, 34 addr => pack_sockaddr_in( 80, INADDR_ANY ) 35 } ], 36); 37 38IO::Socket::IP->new( LocalPort => "zyxxyblarg(80)" ); 39 40is_deeply( \@gai_args, 41 [ 42 [ undef, "zyxxyblarg", { flags => AI_PASSIVE|$AI_ADDRCONFIG, socktype => SOCK_STREAM, protocol => IPPROTO_TCP } ], 43 [ undef, "80", { flags => AI_PASSIVE|$AI_ADDRCONFIG, socktype => SOCK_STREAM, protocol => IPPROTO_TCP } ], 44 ], 45 '@gai_args for LocalPort => "zyxxyblarg(80)"' ); 46 47done_testing; 48