File 4719-Fix-tests-on-WSL.patch of Package erlang

From 46adfb086e7bed81ce4477c2083bb1034cbd6f45 Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Tue, 4 Feb 2020 15:09:58 +0100
Subject: [PATCH 09/11] Fix tests on WSL

We need to handle that we are running erl.exe outside of the unix
world, when testing on windows (with wsl available)
---
 erts/emulator/test/port_SUITE.erl  |  8 +++++++-
 lib/kernel/test/os_SUITE.erl       | 10 +++++++---
 lib/stdlib/test/filename_SUITE.erl |  5 ++++-
 lib/stdlib/test/shell_SUITE.erl    |  2 +-
 lib/stdlib/test/win32reg_SUITE.erl | 38 +++++++++++++++++++++-----------------
 5 files changed, 40 insertions(+), 23 deletions(-)

diff --git a/erts/emulator/test/port_SUITE.erl b/erts/emulator/test/port_SUITE.erl
index eb9b94a316..8a67bf7512 100644
--- a/erts/emulator/test/port_SUITE.erl
+++ b/erts/emulator/test/port_SUITE.erl
@@ -1052,7 +1052,9 @@ huge_env(Config) when is_list(Config) ->
 %% Test to spawn program with command payload buffer
 %% just around pipe capacity (9f779819f6bda734c5953468f7798)
 pipe_limit_env(Config) when is_list(Config) ->
+    WSL = os:getenv("WSLENV") =/= false,
     Cmd = case os:type() of
+              {win32,_} when WSL -> "cmd.exe /q /c wsl true";
               {win32,_} -> "cmd /q /c true";
               _ -> "true"
           end,
@@ -1706,7 +1708,11 @@ spawn_executable(Config) when is_list(Config) ->
     ok.
 
 unregister_name(Config) when is_list(Config) ->
-    true = register(crash, open_port({spawn, "sleep 100"}, [])),
+    Cmd = case os:getenv("WSLENV") of
+              false -> "sleep 5";
+              _ -> "wsl.exe sleep 5"
+          end,
+    true = register(crash, open_port({spawn, Cmd}, [])),
     true = unregister(crash).
 
 test_bat_file(Dir) ->
diff --git a/lib/kernel/test/os_SUITE.erl b/lib/kernel/test/os_SUITE.erl
index 710b9b115c..e952dec625 100644
--- a/lib/kernel/test/os_SUITE.erl
+++ b/lib/kernel/test/os_SUITE.erl
@@ -324,14 +324,18 @@ close_stdin(Config) ->
     "-1" = os:cmd(Fds).
 
 max_size_command(_Config) ->
+    WSL = case os:getenv("WSLENV") of
+              false -> "";
+              _ -> "wsl "
+          end,
 
-    Res20 = os:cmd("cat /dev/zero", #{ max_size => 20 }),
+    Res20 = os:cmd(WSL ++ "cat /dev/zero", #{ max_size => 20 }),
     20 = length(Res20),
 
-    Res0 = os:cmd("cat /dev/zero", #{ max_size => 0 }),
+    Res0 = os:cmd(WSL ++ "cat /dev/zero", #{ max_size => 0 }),
     0 = length(Res0),
 
-    Res32768 = os:cmd("cat /dev/zero", #{ max_size => 32768 }),
+    Res32768 = os:cmd(WSL ++ "cat /dev/zero", #{ max_size => 32768 }),
     32768 = length(Res32768),
 
     ResHello = string:trim(os:cmd("echo hello", #{ max_size => 20 })),
diff --git a/lib/stdlib/test/filename_SUITE.erl b/lib/stdlib/test/filename_SUITE.erl
index f284eb1ed6..c977517652 100644
--- a/lib/stdlib/test/filename_SUITE.erl
+++ b/lib/stdlib/test/filename_SUITE.erl
@@ -1081,7 +1081,10 @@ check_basedir_xdg([Type|Types]) ->
     Opt  = #{os=>linux},
     Key  = basedir_xdg_env(Type),
     io:format("type: ~p~n", [Type]),
-    Home = os:getenv("HOME"),
+    Home = case os:getenv("WSLENV") of
+               false -> os:getenv("HOME");
+               _ -> os:getenv("USERPROFILE")
+           end,
     NDir = "/some/absolute/path",
     DefPath = basedir_xdg_def(Type,Home,Name),
     EnvPath = case Type of
diff --git a/lib/stdlib/test/shell_SUITE.erl b/lib/stdlib/test/shell_SUITE.erl
index 4d85e1f04b..2de75a29c3 100644
--- a/lib/stdlib/test/shell_SUITE.erl
+++ b/lib/stdlib/test/shell_SUITE.erl
@@ -2941,7 +2941,7 @@ otp_14296(Config) when is_list(Config) ->
     end(),
 
     fun() ->
-            Port = open_port({spawn, "ls"}, [{line,1}]),
+            Port = open_port({spawn, "erl"}, [{line,1}]),
             KnownPort = erlang:port_to_list(Port),
             S = KnownPort ++ ".",
             R = KnownPort ++ ".\n",
diff --git a/lib/stdlib/test/win32reg_SUITE.erl b/lib/stdlib/test/win32reg_SUITE.erl
index 5e44e16ddc..f7d3d8da97 100644
--- a/lib/stdlib/test/win32reg_SUITE.erl
+++ b/lib/stdlib/test/win32reg_SUITE.erl
@@ -59,23 +59,27 @@ long(Config) when is_list(Config) ->
     {ok,Read} = win32reg:open([read]),
     ok = win32reg:change_key(Read, "\\hklm"),
 
-    ok = win32reg:change_key(Read, LongKey),
-    {ok,ErlangKey} = win32reg:current_key(Read),
-    io:format("Erlang key: ~s~n", [ErlangKey]),
-    ok = win32reg:close(Read),
-
-    {ok,Reg} = win32reg:open([read, write]),
-    %% Write a long value and read it back.
-    TestKey = "test_key",
-    LongValue = lists:concat(["This is a long value generated by the test case ",?MODULE,":long/1. "|lists:duplicate(128, "a")]),
-    ok = win32reg:set_value(Reg, TestKey, LongValue),
-    {ok,LongValue} = win32reg:value(Reg, TestKey),
-
-    io:format("Where ~p Key ~s Value ~s ~n", [win32reg:current_key(Reg), TestKey, LongValue]),
-    %% Done.
-
-    ok = win32reg:close(Reg),
-    ok.
+    case os:getenv("WSLENV") of
+        false ->
+            ok = win32reg:change_key(Read, LongKey),
+            {ok,ErlangKey} = win32reg:current_key(Read),
+            io:format("Erlang key: ~s~n", [ErlangKey]),
+            ok = win32reg:close(Read),
+
+            {ok,Reg} = win32reg:open([read, write]),
+            %% Write a long value and read it back.
+            TestKey = "test_key",
+            LongValue = lists:concat(["This is a long value generated by the test case ",?MODULE,":long/1. "|lists:duplicate(128, "a")]),
+            ok = win32reg:set_value(Reg, TestKey, LongValue),
+            {ok,LongValue} = win32reg:value(Reg, TestKey),
+
+            io:format("Where ~p Key ~s Value ~s ~n", [win32reg:current_key(Reg), TestKey, LongValue]),
+            %% Done.
+            ok = win32reg:close(Reg);
+        _ ->
+            %% We have installed erlang when testing on win10 and newer
+            ok
+    end.
 
 evil_write(Config) when is_list(Config) ->
     Key = "Software\\Ericsson\\Erlang",
-- 
2.16.4

openSUSE Build Service is sponsored by