File 0485-kernel-esock-tcp-test-Tweaked-some-tc-to-handle-Darw.patch of Package erlang
From 018fe580881e64a69c8f801c2f8ec1d72e1169d4 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Fri, 6 Dec 2024 18:29:37 +0100
Subject: [PATCH 5/5] [kernel|esock|tcp|test] Tweaked some tc to handle Darwin
Tweaked some test cases to handle some strange behaviour on Darwin
(on some machines).
OTP-19386
---
lib/kernel/test/gen_tcp_misc_SUITE.erl | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/lib/kernel/test/gen_tcp_misc_SUITE.erl b/lib/kernel/test/gen_tcp_misc_SUITE.erl
index e5b9ed24f9..e411f8d639 100644
--- a/lib/kernel/test/gen_tcp_misc_SUITE.erl
+++ b/lib/kernel/test/gen_tcp_misc_SUITE.erl
@@ -9310,15 +9310,24 @@ otp_18357(Config) when is_list(Config) ->
do_otp_18357(#{name := Name, addr := Addr}) ->
?P("try create listen socket"),
- {ok, L} = gen_tcp:listen(0, [{ifaddr, Addr}]),
+ {ok, L} = gen_tcp:listen(0,
+ [{inet_backend, socket},
+ {debug, true},
+ {ifaddr, Addr}]),
{ok, PortNo} = inet:port(L),
?P("try connect (with bind-to-device)"),
+ OS = which_os(),
C = case gen_tcp:connect(Addr, PortNo,
[{inet_backend, socket},
+ {debug, true},
{bind_to_device, list_to_binary(Name)}]) of
{ok, CSock} ->
CSock;
+ {error, einval = Reason} when (OS =:= darwin) ->
+ ?P("Failed connecting, ~p, skipping", [Reason]),
+ (catch gen_tcp:close(L)),
+ skip(Reason);
{error, eperm = Reason} ->
?P("Failed connecting, ~p, skipping", [Reason]),
(catch gen_tcp:close(L)),
@@ -9620,6 +9629,19 @@ skip(Reason) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% This is a simplified os:type()
+which_os() ->
+ %% Need this for the error handling
+ case os:type() of
+ {unix, Flavor} ->
+ Flavor;
+ {win32, nt} ->
+ windows;
+ _ ->
+ other % We do not really care...
+ end.
+
+
messages() ->
pi(messages).
--
2.43.0