mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	bpo-37199: Fix test failures when IPv6 is unavailable or disabled (#14480)
This commit is contained in:
		
							parent
							
								
									0d671c04c3
								
							
						
					
					
						commit
						c2cda638d6
					
				
					 5 changed files with 21 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
Fix test failures when IPv6 is unavailable or disabled.
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue