@@ -116,6 +116,13 @@ def test_ipaddr_info(self):
116116 self .assertIsNone (
117117 base_events ._ipaddr_info ('::3%lo0' , 1 , INET6 , STREAM , TCP ))
118118
119+ if hasattr (socket , 'SOCK_NONBLOCK' ):
120+ self .assertEqual (
121+ None ,
122+ base_events ._ipaddr_info (
123+ '1.2.3.4' , 1 , INET , STREAM | socket .SOCK_NONBLOCK , TCP ))
124+
125+
119126 def test_port_parameter_types (self ):
120127 # Test obscure kinds of arguments for "port".
121128 INET = socket .AF_INET
@@ -1040,6 +1047,43 @@ def test_create_connection_host_port_sock(self):
10401047 MyProto , 'example.com' , 80 , sock = object ())
10411048 self .assertRaises (ValueError , self .loop .run_until_complete , coro )
10421049
1050+ @unittest .skipUnless (hasattr (socket , 'AF_UNIX' ), 'no Unix sockets' )
1051+ def test_create_connection_wrong_sock (self ):
1052+ sock = socket .socket (socket .AF_UNIX )
1053+ with sock :
1054+ coro = self .loop .create_connection (MyProto , sock = sock )
1055+ with self .assertRaisesRegex (ValueError ,
1056+ 'A TCP Stream Socket was expected' ):
1057+ self .loop .run_until_complete (coro )
1058+
1059+ @unittest .skipUnless (hasattr (socket , 'AF_UNIX' ), 'no Unix sockets' )
1060+ def test_create_server_wrong_sock (self ):
1061+ sock = socket .socket (socket .AF_UNIX )
1062+ with sock :
1063+ coro = self .loop .create_server (MyProto , sock = sock )
1064+ with self .assertRaisesRegex (ValueError ,
1065+ 'A TCP Stream Socket was expected' ):
1066+ self .loop .run_until_complete (coro )
1067+
1068+ @unittest .skipUnless (hasattr (socket , 'SOCK_NONBLOCK' ),
1069+ 'no socket.SOCK_NONBLOCK (linux only)' )
1070+ def test_create_server_stream_bittype (self ):
1071+ sock = socket .socket (
1072+ socket .AF_INET , socket .SOCK_STREAM | socket .SOCK_NONBLOCK )
1073+ with sock :
1074+ coro = self .loop .create_server (lambda : None , sock = sock )
1075+ srv = self .loop .run_until_complete (coro )
1076+ srv .close ()
1077+ self .loop .run_until_complete (srv .wait_closed ())
1078+
1079+ def test_create_datagram_endpoint_wrong_sock (self ):
1080+ sock = socket .socket (socket .AF_INET )
1081+ with sock :
1082+ coro = self .loop .create_datagram_endpoint (MyProto , sock = sock )
1083+ with self .assertRaisesRegex (ValueError ,
1084+ 'A UDP Socket was expected' ):
1085+ self .loop .run_until_complete (coro )
1086+
10431087 def test_create_connection_no_host_port_sock (self ):
10441088 coro = self .loop .create_connection (MyProto )
10451089 self .assertRaises (ValueError , self .loop .run_until_complete , coro )
@@ -1487,36 +1531,39 @@ def test_create_datagram_endpoint_sock(self):
14871531 self .assertEqual ('CLOSED' , protocol .state )
14881532
14891533 def test_create_datagram_endpoint_sock_sockopts (self ):
1534+ class FakeSock :
1535+ type = socket .SOCK_DGRAM
1536+
14901537 fut = self .loop .create_datagram_endpoint (
1491- MyDatagramProto , local_addr = ('127.0.0.1' , 0 ), sock = object ())
1538+ MyDatagramProto , local_addr = ('127.0.0.1' , 0 ), sock = FakeSock ())
14921539 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
14931540
14941541 fut = self .loop .create_datagram_endpoint (
1495- MyDatagramProto , remote_addr = ('127.0.0.1' , 0 ), sock = object ())
1542+ MyDatagramProto , remote_addr = ('127.0.0.1' , 0 ), sock = FakeSock ())
14961543 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
14971544
14981545 fut = self .loop .create_datagram_endpoint (
1499- MyDatagramProto , family = 1 , sock = object ())
1546+ MyDatagramProto , family = 1 , sock = FakeSock ())
15001547 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
15011548
15021549 fut = self .loop .create_datagram_endpoint (
1503- MyDatagramProto , proto = 1 , sock = object ())
1550+ MyDatagramProto , proto = 1 , sock = FakeSock ())
15041551 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
15051552
15061553 fut = self .loop .create_datagram_endpoint (
1507- MyDatagramProto , flags = 1 , sock = object ())
1554+ MyDatagramProto , flags = 1 , sock = FakeSock ())
15081555 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
15091556
15101557 fut = self .loop .create_datagram_endpoint (
1511- MyDatagramProto , reuse_address = True , sock = object ())
1558+ MyDatagramProto , reuse_address = True , sock = FakeSock ())
15121559 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
15131560
15141561 fut = self .loop .create_datagram_endpoint (
1515- MyDatagramProto , reuse_port = True , sock = object ())
1562+ MyDatagramProto , reuse_port = True , sock = FakeSock ())
15161563 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
15171564
15181565 fut = self .loop .create_datagram_endpoint (
1519- MyDatagramProto , allow_broadcast = True , sock = object ())
1566+ MyDatagramProto , allow_broadcast = True , sock = FakeSock ())
15201567 self .assertRaises (ValueError , self .loop .run_until_complete , fut )
15211568
15221569 def test_create_datagram_endpoint_sockopts (self ):
0 commit comments