mirror of https://github.com/python/cpython
bpo-37199: Fix test failures when IPv6 is unavailable or disabled (#14480)
This commit is contained in:
parent
0d671c04c3
commit
c2cda638d6
|
@ -1493,6 +1493,8 @@ def get_socket_conn_refused_errs():
|
||||||
# bpo-31910: socket.create_connection() fails randomly
|
# bpo-31910: socket.create_connection() fails randomly
|
||||||
# with EADDRNOTAVAIL on Travis CI
|
# with EADDRNOTAVAIL on Travis CI
|
||||||
errors.append(errno.EADDRNOTAVAIL)
|
errors.append(errno.EADDRNOTAVAIL)
|
||||||
|
if not IPV6_ENABLED:
|
||||||
|
errors.append(errno.EAFNOSUPPORT)
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,9 @@ class BaseEventTests(test_utils.TestCase):
|
||||||
self.assertIsNone(
|
self.assertIsNone(
|
||||||
base_events._ipaddr_info('1.2.3.4', 1, UNSPEC, 0, 0))
|
base_events._ipaddr_info('1.2.3.4', 1, UNSPEC, 0, 0))
|
||||||
|
|
||||||
|
if not support.IPV6_ENABLED:
|
||||||
|
return
|
||||||
|
|
||||||
# IPv4 address with family IPv6.
|
# IPv4 address with family IPv6.
|
||||||
self.assertIsNone(
|
self.assertIsNone(
|
||||||
base_events._ipaddr_info('1.2.3.4', 1, INET6, STREAM, TCP))
|
base_events._ipaddr_info('1.2.3.4', 1, INET6, STREAM, TCP))
|
||||||
|
@ -1149,7 +1152,7 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
|
||||||
srv.close()
|
srv.close()
|
||||||
self.loop.run_until_complete(srv.wait_closed())
|
self.loop.run_until_complete(srv.wait_closed())
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(socket, 'AF_INET6'), 'no IPv6 support')
|
@unittest.skipUnless(support.IPV6_ENABLED, 'no IPv6 support')
|
||||||
def test_create_server_ipv6(self):
|
def test_create_server_ipv6(self):
|
||||||
async def main():
|
async def main():
|
||||||
with self.assertWarns(DeprecationWarning):
|
with self.assertWarns(DeprecationWarning):
|
||||||
|
@ -1281,6 +1284,9 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
|
||||||
t.close()
|
t.close()
|
||||||
test_utils.run_briefly(self.loop) # allow transport to close
|
test_utils.run_briefly(self.loop) # allow transport to close
|
||||||
|
|
||||||
|
if not support.IPV6_ENABLED:
|
||||||
|
return
|
||||||
|
|
||||||
sock.family = socket.AF_INET6
|
sock.family = socket.AF_INET6
|
||||||
coro = self.loop.create_connection(asyncio.Protocol, '::1', 80)
|
coro = self.loop.create_connection(asyncio.Protocol, '::1', 80)
|
||||||
t, p = self.loop.run_until_complete(coro)
|
t, p = self.loop.run_until_complete(coro)
|
||||||
|
@ -1298,6 +1304,7 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
|
||||||
t.close()
|
t.close()
|
||||||
test_utils.run_briefly(self.loop) # allow transport to close
|
test_utils.run_briefly(self.loop) # allow transport to close
|
||||||
|
|
||||||
|
@unittest.skipUnless(support.IPV6_ENABLED, 'no IPv6 support')
|
||||||
@unittest.skipIf(sys.platform.startswith('aix'),
|
@unittest.skipIf(sys.platform.startswith('aix'),
|
||||||
"bpo-25545: IPv6 scope id and getaddrinfo() behave differently on AIX")
|
"bpo-25545: IPv6 scope id and getaddrinfo() behave differently on AIX")
|
||||||
@patch_socket
|
@patch_socket
|
||||||
|
|
|
@ -4964,8 +4964,15 @@ class NetworkConnectionNoServer(unittest.TestCase):
|
||||||
# Issue #9792: create_connection() should not recast timeout errors
|
# Issue #9792: create_connection() should not recast timeout errors
|
||||||
# as generic socket errors.
|
# as generic socket errors.
|
||||||
with self.mocked_socket_module():
|
with self.mocked_socket_module():
|
||||||
with self.assertRaises(socket.timeout):
|
try:
|
||||||
socket.create_connection((HOST, 1234))
|
socket.create_connection((HOST, 1234))
|
||||||
|
except socket.timeout:
|
||||||
|
pass
|
||||||
|
except OSError as exc:
|
||||||
|
if support.IPV6_ENABLED or exc.errno != errno.EAFNOSUPPORT:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
self.fail('socket.timeout not raised')
|
||||||
|
|
||||||
|
|
||||||
class NetworkConnectionAttributesTest(SocketTCPTest, ThreadableTest):
|
class NetworkConnectionAttributesTest(SocketTCPTest, ThreadableTest):
|
||||||
|
|
|
@ -676,7 +676,7 @@ class BasicSocketTests(unittest.TestCase):
|
||||||
fail(cert, 'example.net')
|
fail(cert, 'example.net')
|
||||||
|
|
||||||
# -- IPv6 matching --
|
# -- IPv6 matching --
|
||||||
if hasattr(socket, 'AF_INET6'):
|
if support.IPV6_ENABLED:
|
||||||
cert = {'subject': ((('commonName', 'example.com'),),),
|
cert = {'subject': ((('commonName', 'example.com'),),),
|
||||||
'subjectAltName': (
|
'subjectAltName': (
|
||||||
('DNS', 'example.com'),
|
('DNS', 'example.com'),
|
||||||
|
@ -757,7 +757,7 @@ class BasicSocketTests(unittest.TestCase):
|
||||||
ssl._inet_paton(invalid)
|
ssl._inet_paton(invalid)
|
||||||
for ipaddr in ['127.0.0.1', '192.168.0.1']:
|
for ipaddr in ['127.0.0.1', '192.168.0.1']:
|
||||||
self.assertTrue(ssl._inet_paton(ipaddr))
|
self.assertTrue(ssl._inet_paton(ipaddr))
|
||||||
if hasattr(socket, 'AF_INET6'):
|
if support.IPV6_ENABLED:
|
||||||
for ipaddr in ['::1', '2001:db8:85a3::8a2e:370:7334']:
|
for ipaddr in ['::1', '2001:db8:85a3::8a2e:370:7334']:
|
||||||
self.assertTrue(ssl._inet_paton(ipaddr))
|
self.assertTrue(ssl._inet_paton(ipaddr))
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix test failures when IPv6 is unavailable or disabled.
|
Loading…
Reference in New Issue