summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_eunit.erl18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/rebar_eunit.erl b/src/rebar_eunit.erl
index bfaaaa4..cf73e65 100644
--- a/src/rebar_eunit.erl
+++ b/src/rebar_eunit.erl
@@ -472,7 +472,7 @@ reset_after_eunit({OldProcesses, WasAlive, OldAppEnvs, _OldACs}) ->
?DEBUG("Stopping net kernel....\n", []),
erl_epmd:stop(),
net_kernel:stop(),
- timer:sleep(100);
+ pause_until_net_kernel_stopped();
true ->
ok
end,
@@ -553,3 +553,19 @@ wait_until_dead(Pid) when is_pid(Pid) ->
end;
wait_until_dead(_) ->
ok.
+
+pause_until_net_kernel_stopped() ->
+ pause_until_net_kernel_stopped(10).
+
+pause_until_net_kernel_stopped(0) ->
+ exit(net_kernel_stop_failed);
+pause_until_net_kernel_stopped(N) ->
+ try
+ _ = net_kernel:i(),
+ timer:sleep(100),
+ pause_until_net_kernel_stopped(N - 1)
+ catch
+ error:badarg ->
+ ?DEBUG("Stopped net kernel.\n", []),
+ ok
+ end.