File 0220-efile_SUITE-Fix-proc_zero_sized_files-on-systems-wit.patch of Package erlang

From 25045707f86bf6352d927fa0351cb0a1a339f6ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20H=C3=B6gberg?= <john@erlang.org>
Date: Mon, 1 Apr 2019 11:36:31 +0200
Subject: [PATCH] efile_SUITE: Fix proc_zero_sized_files on systems with empty
 /proc

This test would fail on some versions of FreeBSD because /proc was
present but empty.

This commit makes the test fail if and only if a known zero-sized
file is found and turns out to be empty empty.
---
 erts/emulator/test/efile_SUITE.erl | 45 ++++++++++++++++----------------------
 1 file changed, 19 insertions(+), 26 deletions(-)

diff --git a/erts/emulator/test/efile_SUITE.erl b/erts/emulator/test/efile_SUITE.erl
index 55c5343739..045b351e02 100644
--- a/erts/emulator/test/efile_SUITE.erl
+++ b/erts/emulator/test/efile_SUITE.erl
@@ -105,34 +105,27 @@ open_files(Name) ->
 %% a /proc directory), let's read some zero sized files 500 times each, while
 %% ensuring that response isn't empty << >>
 proc_zero_sized_files(Config) when is_list(Config) ->
-    {Type, Flavor} = os:type(),
-    %% Some files which exist on Linux but might be missing on other systems
-    Inputs = ["/proc/cpuinfo",
-              "/proc/meminfo",
-              "/proc/partitions",
-              "/proc/swaps",
-              "/proc/version",
-              "/proc/uptime",
-              %% curproc is present on freebsd
-              "/proc/curproc/cmdline"],
-    case filelib:is_dir("/proc") of
-        false -> {skip, "/proc not found"}; % skip the test if no /proc
-        _ when Type =:= unix andalso Flavor =:= sunos ->
-            %% SunOS has a /proc, but no zero sized special files
-            {skip, "sunos does not have any zero sized special files"};
-        true ->
-            %% Take away files which do not exist in proc
-            Inputs1 = lists:filter(fun filelib:is_file/1, Inputs),
-
-            %% Fail if none of mentioned files exist in /proc, did we just get
-            %% a normal /proc directory without any special files?
-            ?assertNotEqual([], Inputs1),
-
+    TestFiles0 = [%% Some files which exist on Linux but might be missing on
+                  %% other systems
+                  "/proc/cpuinfo",
+                  "/proc/meminfo",
+                  "/proc/partitions",
+                  "/proc/swaps",
+                  "/proc/version",
+                  "/proc/uptime",
+                  %% curproc is present on FreeBSD
+                  "/proc/curproc/cmdline"],
+
+    TestFiles = [F || F <- TestFiles0, filelib:is_file(F)],
+
+    case TestFiles of
+        [_|_] ->
             %% For 6 inputs and 500 attempts each this do run anywhere
             %% between 500 and 3000 function calls.
-            lists:foreach(
-                fun(Filename) -> do_proc_zero_sized(Filename, 500) end,
-                Inputs1)
+            [do_proc_zero_sized(F, 500) || F <- TestFiles],
+            ok;
+        [] ->
+            {skip, "Failed to find any known zero-sized files"}
     end.
 
 %% @doc Test one file N times to also trigger possible leaking fds and memory
-- 
2.16.4

openSUSE Build Service is sponsored by