summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2011-04-28 17:18:10 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2011-04-28 17:18:10 (GMT)
commit9c39f3c4ec0cfc3655b95c3637c4222ecb173f33 (patch)
treeb3ba0194360d3f57dd49784248493476ec921773 /Lib/test
parent70eb79c669547509d82b3e2d8fac7fa1b6244f75 (diff)
downloadcpython-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.py30
-rw-r--r--Lib/test/test_ftplib.py2
-rw-r--r--Lib/test/test_socket.py15
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