File 0615-file_SUITE-Ignore-EILSEQ-on-Darwin-in-fnu-latin1-tes.patch of Package erlang

From f26340035f0bded68c9eefbd3a534d8a5f428e36 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20H=C3=B6gberg?= <john@erlang.org>
Date: Mon, 25 Mar 2019 13:03:49 +0100
Subject: [PATCH 1/2] file_SUITE: Ignore EILSEQ on Darwin in +fnu/latin1 test

There's no way to create the file in question, so we may as well
skip the test.
---
 erts/emulator/beam/erl_posix_str.c |  3 +++
 lib/kernel/test/file_SUITE.erl     | 34 ++++++++++++++++++++++++----------
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/erts/emulator/beam/erl_posix_str.c b/erts/emulator/beam/erl_posix_str.c
index 7b3e640d3f..5b515d6e78 100644
--- a/erts/emulator/beam/erl_posix_str.c
+++ b/erts/emulator/beam/erl_posix_str.c
@@ -171,6 +171,9 @@ erl_errno_id(error)
 #if defined(EIDRM) && (!defined(EINPROGRESS) || (EIDRM != EINPROGRESS))
     case EIDRM: return "eidrm";
 #endif
+#ifdef EILSEQ
+    case EILSEQ: return "eilseq";
+#endif
 #ifdef EINIT
     case EINIT: return "einit";
 #endif
diff --git a/lib/kernel/test/file_SUITE.erl b/lib/kernel/test/file_SUITE.erl
index 711ffccb67..e095e589a3 100644
--- a/lib/kernel/test/file_SUITE.erl
+++ b/lib/kernel/test/file_SUITE.erl
@@ -3744,19 +3744,33 @@ otp_10852(Config) when is_list(Config) ->
     ok = rpc_call(Node, read_file, [B]),
     ok = rpc_call(Node, make_link, [B,B]),
     case rpc_call(Node, make_symlink, [B,B]) of
-	ok -> ok;
-	{error, E} when (E =:= enotsup) or (E =:= eperm) ->
-	    {win32,_} = os:type()
+        {error, eilseq} ->
+            %% Some versions of OS X refuse to create files with illegal names.
+            {unix,darwin} = os:type();
+        {error, eperm} ->
+            %% The test user might not have permission to create symlinks.
+            {win32,_} = os:type();
+        ok ->
+            ok
     end,
     ok = rpc_call(Node, delete, [B]),
-    ok = rpc_call(Node, make_dir, [B]),
+    case rpc_call(Node, make_dir, [B]) of
+        {error, eilseq} ->
+            {unix,darwin} = os:type();
+        ok ->
+            ok
+    end,
     ok = rpc_call(Node, del_dir, [B]),
-    ok = rpc_call(Node, write_file, [B,B]),
-    {ok, Fd} = rpc_call(Node, open, [B,[read]]),
-    ok = rpc_call(Node, close, [Fd]),
-    {ok,0} = rpc_call(Node, copy, [B,B]),
-    {ok, Fd2, B} = rpc_call(Node, path_open, [["."], B, [read]]),
-    ok = rpc_call(Node, close, [Fd2]),
+    case rpc_call(Node, write_file, [B,B]) of
+        {error, eilseq} ->
+            {unix,darwin} = os:type();
+        ok ->
+            {ok, Fd} = rpc_call(Node, open, [B,[read]]),
+            ok = rpc_call(Node, close, [Fd]),
+            {ok,0} = rpc_call(Node, copy, [B,B]),
+            {ok, Fd2, B} = rpc_call(Node, path_open, [["."], B, [read]]),
+            ok = rpc_call(Node, close, [Fd2])
+    end,
     true = test_server:stop_node(Node),
     ok.
 
-- 
2.16.4

openSUSE Build Service is sponsored by