bpo-37199: Fix test failures when IPv6 is unavailable or disabled (#14480)
https://github.com/python/cpython/commit/c2cda638d63b98f5cf9a8ef13e15aace2b7... commit: c2cda638d63b98f5cf9a8ef13e15aace2b7e3f0b branch: master author: Zackery Spytz <zspytz@gmail.com> committer: Andrew Svetlov <andrew.svetlov@gmail.com> date: 2019-06-30T18:24:43+03:00 summary: bpo-37199: Fix test failures when IPv6 is unavailable or disabled (#14480) files: A Misc/NEWS.d/next/Tests/2019-06-29-23-56-28.bpo-37199.FHDsLf.rst M Lib/test/support/__init__.py M Lib/test/test_asyncio/test_base_events.py M Lib/test/test_socket.py M Lib/test/test_ssl.py diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 19ea9764e96c..a65de4a5abe8 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -1493,6 +1493,8 @@ def get_socket_conn_refused_errs(): # bpo-31910: socket.create_connection() fails randomly # with EADDRNOTAVAIL on Travis CI errors.append(errno.EADDRNOTAVAIL) + if not IPV6_ENABLED: + errors.append(errno.EAFNOSUPPORT) return errors diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index 811b37425dd2..08d4792fa726 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -91,6 +91,9 @@ def test_ipaddr_info(self): self.assertIsNone( base_events._ipaddr_info('1.2.3.4', 1, UNSPEC, 0, 0)) + if not support.IPV6_ENABLED: + return + # IPv4 address with family IPv6. self.assertIsNone( base_events._ipaddr_info('1.2.3.4', 1, INET6, STREAM, TCP)) @@ -1149,7 +1152,7 @@ def test_create_server_stream_bittype(self): srv.close() 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): async def main(): with self.assertWarns(DeprecationWarning): @@ -1281,6 +1284,9 @@ def _test_create_connection_ip_addr(self, m_socket, allow_inet_pton): t.close() test_utils.run_briefly(self.loop) # allow transport to close + if not support.IPV6_ENABLED: + return + sock.family = socket.AF_INET6 coro = self.loop.create_connection(asyncio.Protocol, '::1', 80) t, p = self.loop.run_until_complete(coro) @@ -1298,6 +1304,7 @@ def _test_create_connection_ip_addr(self, m_socket, allow_inet_pton): t.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'), "bpo-25545: IPv6 scope id and getaddrinfo() behave differently on AIX") @patch_socket diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 50094de58bf1..e92f871880a9 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -4964,8 +4964,15 @@ def test_create_connection_timeout(self): # Issue #9792: create_connection() should not recast timeout errors # as generic socket errors. with self.mocked_socket_module(): - with self.assertRaises(socket.timeout): + try: 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): diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index c72a85710d5c..064f0e8d4de6 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -676,7 +676,7 @@ def fail(cert, hostname): fail(cert, 'example.net') # -- IPv6 matching -- - if hasattr(socket, 'AF_INET6'): + if support.IPV6_ENABLED: cert = {'subject': ((('commonName', 'example.com'),),), 'subjectAltName': ( ('DNS', 'example.com'), @@ -757,7 +757,7 @@ def fail(cert, hostname): ssl._inet_paton(invalid) for ipaddr in ['127.0.0.1', '192.168.0.1']: 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']: self.assertTrue(ssl._inet_paton(ipaddr)) diff --git a/Misc/NEWS.d/next/Tests/2019-06-29-23-56-28.bpo-37199.FHDsLf.rst b/Misc/NEWS.d/next/Tests/2019-06-29-23-56-28.bpo-37199.FHDsLf.rst new file mode 100644 index 000000000000..b05209159cc8 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2019-06-29-23-56-28.bpo-37199.FHDsLf.rst @@ -0,0 +1 @@ +Fix test failures when IPv6 is unavailable or disabled.
participants (1)
-
Andrew Svetlov