tests/run-tests.py
changeset 31002 a489ee9b2852
parent 30987 1ee685defe80
child 31003 225f574e0645
--- 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"""