diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-04-28 17:18:10 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-04-28 17:18:10 (GMT) |
commit | 9c39f3c4ec0cfc3655b95c3637c4222ecb173f33 (patch) | |
tree | b3ba0194360d3f57dd49784248493476ec921773 /Lib/test | |
parent | 70eb79c669547509d82b3e2d8fac7fa1b6244f75 (diff) | |
download | cpython-9c39f3c4ec0cfc3655b95c3637c4222ecb173f33.zip cpython-9c39f3c4ec0cfc3655b95c3637c4222ecb173f33.tar.gz cpython-9c39f3c4ec0cfc3655b95c3637c4222ecb173f33.tar.bz2 |
Issue #11811: Factor out detection of IPv6 support on the current host
and make it available as `test.support.IPV6_ENABLED`. Patch by
Charles-François Natali.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/support.py | 30 | ||||
-rw-r--r-- | Lib/test/test_ftplib.py | 2 | ||||
-rw-r--r-- | Lib/test/test_socket.py | 15 |
3 files changed, 24 insertions, 23 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py index fbf6de4..800f0e5 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -33,16 +33,15 @@ __all__ = [ "verbose", "use_resources", "max_memuse", "record_original_stdout", "get_original_stdout", "unload", "unlink", "rmtree", "forget", "is_resource_enabled", "requires", "find_unused_port", "bind_port", - "is_jython", "TESTFN", "HOST", "SAVEDCWD", "temp_cwd", + "IPV6_ENABLED", "is_jython", "TESTFN", "HOST", "SAVEDCWD", "temp_cwd", "findfile", "sortdict", "check_syntax_error", "open_urlresource", "check_warnings", "CleanImport", "EnvironmentVarGuard", - "TransientResource", "captured_output", "captured_stdout", - "time_out", "socket_peer_reset", "ioerror_peer_reset", - "run_with_locale", 'temp_umask', "transient_internet", - "set_memlimit", "bigmemtest", "bigaddrspacetest", "BasicTestRunner", - "run_unittest", "run_doctest", "threading_setup", "threading_cleanup", - "reap_children", "cpython_only", "check_impl_detail", "get_attribute", - "swap_item", "swap_attr", "requires_IEEE_754", + "TransientResource", "captured_output", "captured_stdout", "time_out", + "socket_peer_reset", "ioerror_peer_reset", "run_with_locale", 'temp_umask', + "transient_internet", "set_memlimit", "bigmemtest", "bigaddrspacetest", + "BasicTestRunner", "run_unittest", "run_doctest", "threading_setup", + "threading_cleanup", "reap_children", "cpython_only", "check_impl_detail", + "get_attribute", "swap_item", "swap_attr", "requires_IEEE_754", "TestHandler", "Matcher", "can_symlink", "skip_unless_symlink"] @@ -381,6 +380,21 @@ def bind_port(sock, host=HOST): port = sock.getsockname()[1] return port +def _is_ipv6_enabled(): + """Check whether IPv6 is enabled on this host.""" + if socket.has_ipv6: + try: + sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) + sock.bind(('::1', 0)) + except (socket.error, socket.gaierror): + pass + else: + sock.close() + return True + return False + +IPV6_ENABLED = _is_ipv6_enabled() + # decorator for skipping tests on non-IEEE 754 platforms requires_IEEE_754 = unittest.skipUnless( float.__getformat__("double").startswith("IEEE"), diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py index 9edb197..cfdfa2c 100644 --- a/Lib/test/test_ftplib.py +++ b/Lib/test/test_ftplib.py @@ -873,7 +873,7 @@ class TestTimeouts(TestCase): def test_main(): tests = [TestFTPClass, TestTimeouts] - if socket.has_ipv6: + if support.IPV6_ENABLED: try: DummyFTPServer((HOST, 0), af=socket.AF_INET6) except socket.error: diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 6ee94b5..99d658b 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -24,18 +24,6 @@ try: except ImportError: fcntl = False -def try_address(host, port=0, family=socket.AF_INET): - """Try to bind a socket on the given host:port and return True - if that has been possible.""" - try: - sock = socket.socket(family, socket.SOCK_STREAM) - sock.bind((host, port)) - except (socket.error, socket.gaierror): - return False - else: - sock.close() - return True - def linux_version(): try: # platform.release() is something like '2.6.33.7-desktop-2mnb' @@ -46,7 +34,6 @@ def linux_version(): HOST = support.HOST MSG = 'Michael Gilfix was here\u1234\r\n'.encode('utf-8') ## test unicode string and carriage return -SUPPORTS_IPV6 = socket.has_ipv6 and try_address('::1', family=socket.AF_INET6) try: import _thread as thread @@ -645,7 +632,7 @@ class GeneralModuleTests(unittest.TestCase): socket.getaddrinfo('localhost', 80) socket.getaddrinfo('127.0.0.1', 80) socket.getaddrinfo(None, 80) - if SUPPORTS_IPV6: + if support.IPV6_ENABLED: socket.getaddrinfo('::1', 80) # port can be a string service name such as "http", a numeric # port number or None |