[PATCH] runtests: check ports on IPv6 address

Augie Fackler raf at durin42.com
Thu Feb 9 21:50:19 EST 2017


On Thu, Feb 09, 2017 at 05:59:35AM -0800, Jun Wu wrote:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1486648674 28800
> #      Thu Feb 09 05:57:54 2017 -0800
> # Node ID 93e23f7b87a4ab456053b6ba573615be16c6c4b0
> # Parent  a68510b69f413545722c086eaeb840dd5e8305b4
> # Available At https://bitbucket.org/quark-zju/hg-draft
> #              hg pull https://bitbucket.org/quark-zju/hg-draft -r 93e23f7b87a4
> runtests: check ports on IPv6 address

Queued, thanks.

> 
> Previously, checkportisavailable only checks ports on the IPv4 address. This
> patch makes it check IPv6 as well. It'll be useful if "localhost" does not
> have an IPv4 address, or its IPv4 address does not exist somehow.
> 
> diff --git a/tests/run-tests.py b/tests/run-tests.py
> --- a/tests/run-tests.py
> +++ b/tests/run-tests.py
> @@ -115,13 +115,17 @@ wifexited = getattr(os, "WIFEXITED", lam
> 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'
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list