Procházet zdrojové kódy

Fix rebar_utils:sh on windows

pull/489/head
Viacheslav V. Kovalev před 10 roky
odevzdal Viacheslav Kovalev
rodič
revize
ab98bc15a8
2 změnil soubory, kde provedl 24 přidání a 7 odebrání
  1. +9
    -5
      src/rebar_utils.erl
  2. +15
    -2
      test/rebar_utils_SUITE.erl

+ 9
- 5
src/rebar_utils.erl Zobrazit soubor

@ -154,7 +154,7 @@ sh(Command0, Options0) ->
Command = lists:flatten(patch_on_windows(Command0, proplists:get_value(env, Options, []))),
PortSettings = proplists:get_all_values(port_settings, Options) ++
[exit_status, {line, 16384}, use_stdio, stderr_to_stdout, hide],
[exit_status, {line, 16384}, use_stdio, stderr_to_stdout, hide, eof],
?DEBUG("Port Cmd: ~s\nPort Opts: ~p\n", [Command, PortSettings]),
Port = open_port({spawn, Command}, PortSettings),
@ -435,10 +435,14 @@ sh_loop(Port, Fun, Acc) ->
sh_loop(Port, Fun, Fun(Line ++ "\n", Acc));
{Port, {data, {noeol, Line}}} ->
sh_loop(Port, Fun, Fun(Line, Acc));
{Port, {exit_status, 0}} ->
{ok, lists:flatten(lists:reverse(Acc))};
{Port, {exit_status, Rc}} ->
{error, {Rc, lists:flatten(lists:reverse(Acc))}}
{Port, eof} ->
Data = lists:flatten(lists:reverse(Acc)),
receive
{Port, {exit_status, 0}} ->
{ok, Data};
{Port, {exit_status, Rc}} ->
{error, {Rc, Data}}
end
end.
beam_to_mod(Dir, Filename) ->

+ 15
- 2
test/rebar_utils_SUITE.erl Zobrazit soubor

@ -21,7 +21,8 @@
task_with_flag_with_trailing_comma/1,
task_with_flag_with_commas/1,
task_with_multiple_flags/1,
special_task_do/1]).
special_task_do/1,
sh_don_not_miss_messages/1]).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
@ -29,7 +30,8 @@
all() ->
[{group, args_to_tasks}].
[{group, args_to_tasks},
sh_don_not_miss_messages].
groups() ->
[{args_to_tasks, [], [empty_arglist,
@ -118,3 +120,14 @@ special_task_do(_Config) ->
"do",
"bar,",
"baz"]).
sh_don_not_miss_messages(_Config) ->
Source = "~nmain(_) ->~n io:format(\"donotmissme\").~n",
file:write_file("do_not_miss_messages", io_lib:format(Source,[])),
{ok, "donotmissme"} = rebar_utils:sh("escript do_not_miss_messages", []),
AnyMessageRemained =
receive
What -> What
after 100 ->
false
end,
AnyMessageRemained = false.

Načítá se…
Zrušit
Uložit