--- a/tests/run-tests.py Wed Feb 08 08:08:41 2017 -0800
+++ b/tests/run-tests.py Thu Feb 09 05:57:54 2017 -0800
@@ -114,15 +114,19 @@
def checkportisavailable(port):
"""return true if a port seems free to bind on localhost"""
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.bind(('localhost', port))
- s.close()
- return True
- except socket.error as exc:
- if not exc.errno == errno.EADDRINUSE:
- raise
- return False
+ families = [getattr(socket, i, None)
+ for i in ('AF_INET', 'AF_INET6')
+ if getattr(socket, i, None) is not None]
+ for family in families:
+ try:
+ s = socket.socket(family, socket.SOCK_STREAM)
+ s.bind(('localhost', port))
+ s.close()
+ return True
+ except socket.error as exc:
+ if exc.errno not in (errno.EADDRINUSE, errno.EADDRNOTAVAIL):
+ raise
+ return False
closefds = os.name == 'posix'
def Popen4(cmd, wd, timeout, env=None):