--- a/tests/run-tests.py Fri Feb 17 11:08:36 2017 +0100
+++ b/tests/run-tests.py Fri Feb 17 00:59:09 2017 -0800
@@ -113,9 +113,13 @@
wifexited = getattr(os, "WIFEXITED", lambda x: False)
# Whether to use IPv6
-def checkipv6available(port=20058):
- """return true if we can listen on localhost's IPv6 ports"""
- family = getattr(socket, 'AF_INET6', None)
+def checksocketfamily(name, port=20058):
+ """return true if we can listen on localhost using family=name
+
+ name should be either 'AF_INET', or 'AF_INET6'.
+ port being used is okay - EADDRINUSE is considered as successful.
+ """
+ family = getattr(socket, name, None)
if family is None:
return False
try:
@@ -133,7 +137,8 @@
else:
return False
-useipv6 = checkipv6available()
+# IPv6 is used if IPv4 is not available and IPv6 is available.
+useipv6 = (not checksocketfamily('AF_INET')) and checksocketfamily('AF_INET6')
def checkportisavailable(port):
"""return true if a port seems free to bind on localhost"""