From f46a3e3d2452e2aee3b70d6120bffc0886f741af Mon Sep 17 00:00:00 2001 From: Unrud Date: Thu, 20 Feb 2020 11:27:26 +0100 Subject: [PATCH] Fix test on MacOS (3) --- radicale/server.py | 3 +++ radicale/tests/test_server.py | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/radicale/server.py b/radicale/server.py index 30a512bc..81436aa2 100644 --- a/radicale/server.py +++ b/radicale/server.py @@ -223,12 +223,15 @@ def serve(configuration, shutdown_socket): isinstance(e, socket.gaierror) and ( # Hostname does not exist or doesn't have # address for address family + # macOS: IPv6 address for INET address family e.errno == socket.EAI_NONAME or # Address not for address family e.errno == COMPAT_EAI_ADDRFAMILY) or # Workaround for PyPy str(e) == "address family mismatched" or # Address family not available (e.g. IPv6 disabled) + # macOS: IPv4 address for INET6 address family with + # IPV6_V6ONLY set e.errno == errno.EADDRNOTAVAIL)): continue raise RuntimeError("Failed to start server %r: %s" % ( diff --git a/radicale/tests/test_server.py b/radicale/tests/test_server.py index 7396a900..7021d754 100644 --- a/radicale/tests/test_server.py +++ b/radicale/tests/test_server.py @@ -126,11 +126,12 @@ class TestBaseServerRequests(BaseTest): socket.IPV6_V6ONLY, 1) with pytest.raises(OSError) as exc_info: sock.bind((address, 0)) + # See ``radicale.server.serve`` assert (isinstance(exc_info.value, socket.gaierror) and exc_info.value.errno in (socket.EAI_NONAME, server.COMPAT_EAI_ADDRFAMILY) or - # Workaround for PyPy - str(exc_info.value) == "address family mismatched") + str(exc_info.value) == "address family mismatched" or + exc_info.value.errno == errno.EADDRNOTAVAIL) def test_ipv6(self): with socket.socket(socket.AF_INET6, socket.SOCK_STREAM) as sock: