mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-28684: asyncio tests handle PermissionError raised on binding unix sockets (GH-4503)
The test.support.skip_unless_bind_unix_socket() decorator is used to skip asyncio tests that fail because the platform lacks a functional bind() function for unix domain sockets (as it is the case for non root users on the recent Android versions that run now SELinux in enforcing mode).
This commit is contained in:
parent
19fb134185
commit
0f86cd38f4
5 changed files with 45 additions and 11 deletions
|
@ -22,6 +22,7 @@ import errno
|
|||
import unittest
|
||||
from unittest import mock
|
||||
import weakref
|
||||
from test import support
|
||||
|
||||
if sys.platform != 'win32':
|
||||
import tty
|
||||
|
@ -470,7 +471,7 @@ class EventLoopTestsMixin:
|
|||
sock = socket.socket()
|
||||
self._basetest_sock_recv_into(httpd, sock)
|
||||
|
||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets')
|
||||
@support.skip_unless_bind_unix_socket
|
||||
def test_unix_sock_client_ops(self):
|
||||
with test_utils.run_test_unix_server() as httpd:
|
||||
sock = socket.socket(socket.AF_UNIX)
|
||||
|
@ -606,7 +607,7 @@ class EventLoopTestsMixin:
|
|||
lambda: MyProto(loop=self.loop), *httpd.address)
|
||||
self._basetest_create_connection(conn_fut)
|
||||
|
||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets')
|
||||
@support.skip_unless_bind_unix_socket
|
||||
def test_create_unix_connection(self):
|
||||
# Issue #20682: On Mac OS X Tiger, getsockname() returns a
|
||||
# zero-length address for UNIX socket.
|
||||
|
@ -736,8 +737,8 @@ class EventLoopTestsMixin:
|
|||
self._test_create_ssl_connection(httpd, create_connection,
|
||||
peername=httpd.address)
|
||||
|
||||
@support.skip_unless_bind_unix_socket
|
||||
@unittest.skipIf(ssl is None, 'No ssl module')
|
||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets')
|
||||
def test_create_ssl_unix_connection(self):
|
||||
# Issue #20682: On Mac OS X Tiger, getsockname() returns a
|
||||
# zero-length address for UNIX socket.
|
||||
|
@ -961,7 +962,7 @@ class EventLoopTestsMixin:
|
|||
|
||||
return server, path
|
||||
|
||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets')
|
||||
@support.skip_unless_bind_unix_socket
|
||||
def test_create_unix_server(self):
|
||||
proto = MyProto(loop=self.loop)
|
||||
server, path = self._make_unix_server(lambda: proto)
|
||||
|
@ -1053,8 +1054,8 @@ class EventLoopTestsMixin:
|
|||
# stop serving
|
||||
server.close()
|
||||
|
||||
@support.skip_unless_bind_unix_socket
|
||||
@unittest.skipIf(ssl is None, 'No ssl module')
|
||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets')
|
||||
def test_create_unix_server_ssl(self):
|
||||
proto = MyProto(loop=self.loop)
|
||||
server, path = self._make_ssl_unix_server(
|
||||
|
@ -1113,8 +1114,8 @@ class EventLoopTestsMixin:
|
|||
self.assertIsNone(proto.transport)
|
||||
server.close()
|
||||
|
||||
@support.skip_unless_bind_unix_socket
|
||||
@unittest.skipIf(ssl is None, 'No ssl module')
|
||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets')
|
||||
def test_create_unix_server_ssl_verify_failed(self):
|
||||
proto = MyProto(loop=self.loop)
|
||||
server, path = self._make_ssl_unix_server(
|
||||
|
@ -1171,8 +1172,8 @@ class EventLoopTestsMixin:
|
|||
proto.transport.close()
|
||||
server.close()
|
||||
|
||||
@support.skip_unless_bind_unix_socket
|
||||
@unittest.skipIf(ssl is None, 'No ssl module')
|
||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets')
|
||||
def test_create_unix_server_ssl_verified(self):
|
||||
proto = MyProto(loop=self.loop)
|
||||
server, path = self._make_ssl_unix_server(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue