File 0483-kernel-esock-udp-test-Tweaked-some-tc-to-handle-Darw.patch of Package erlang

From 014b51de0615843b892334a25545bea044a738e2 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Fri, 6 Dec 2024 18:26:20 +0100
Subject: [PATCH 3/5] [kernel|esock|udp|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_udp_SUITE.erl | 30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/lib/kernel/test/gen_udp_SUITE.erl b/lib/kernel/test/gen_udp_SUITE.erl
index c1e6a539f1..4ee9e536e5 100644
--- a/lib/kernel/test/gen_udp_SUITE.erl
+++ b/lib/kernel/test/gen_udp_SUITE.erl
@@ -1076,7 +1076,9 @@ do_open_fd(Config) when is_list(Config) ->
     ?P("try open second (domain = inet6) socket with FD = ~w "
        "and expect *failure*", [FD]),
 
-    case ?OPEN(Config, 0, [inet6, {fd,FD}]) of
+    OS = which_os(),
+
+    case ?OPEN(Config, 0, [{debug, true}, inet6, {fd,FD}]) of
         {error, einval = Reason} ->
             ?P("expected failure reason ~w", [Reason]),
             ok;
@@ -1091,7 +1093,14 @@ do_open_fd(Config) when is_list(Config) ->
                "~n   ~p", [inet:info(Socket)]),
             (catch gen_udp:close(Socket)),
             (catch gen_udp:close(S1)),
-            ct:fail(unexpected_succes)
+            case ((OS =:= darwin) andalso ?IS_SOCKET_BACKEND(Config)) of
+                true ->
+                    %% This should not work, but on (some) Darwin
+                    %% machines it does...
+                    skip(unexpected_success);
+                _ ->
+                    ct:fail(unexpected_success)
+            end
     end,
 
     ?P("try open second socket with FD = ~w "
@@ -1989,9 +1998,13 @@ do_connect(Config) when is_list(Config) ->
     ok = gen_udp:send(S2, <<16#deadbeef:32>>),
     ?P("try recv on second socket - expect failure when"
        "~n   Socket Info: ~p", [inet:info(S2)]),
+    OS = which_os(),
     ok = case gen_udp:recv(S2, 0, 500) of
 	     {error, econnrefused = R} -> ?P("expected failure: ~w", [R]), ok;
 	     {error, econnreset   = R} -> ?P("expected failure: ~w", [R]), ok;
+             {error, timeout      = R} when (OS =:= darwin) ->
+                 ?P("unexpected failure (~w) on darwin => SKIP", [R]),
+                 skip(R);
 	     Other -> 
                  ?P("UNEXPECTED failure: ~p:"
                     "~n   ~p", [Other, inet:info(S2)]),
@@ -3554,6 +3567,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.
+
+
 which_info(Sock) ->
     which_info([istate, active], inet:info(Sock), #{}).
 
-- 
2.43.0

openSUSE Build Service is sponsored by