From 6736e3147e8587c0c22aff5040e80f1129ce9e79 Mon Sep 17 00:00:00 2001 From: David Reid Date: Mon, 8 Aug 2011 09:46:58 -0700 Subject: [PATCH] Fix handling of {already_started,Pid} from cover:start Previous patch erroneously assumed that cover:start() returned {already_started,Pid} in the cases where cover was already started. We now turn {error,{already_started,Pid}} into {ok, Pid} and return {error, Reason} if we encounter an error we do not know about, this will cause a nice and violent badmatch to stop everything. --- src/rebar_eunit.erl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/rebar_eunit.erl b/src/rebar_eunit.erl index ad56a34..d42ed1f 100644 --- a/src/rebar_eunit.erl +++ b/src/rebar_eunit.erl @@ -288,8 +288,16 @@ cover_init(false, _BeamFiles) -> cover_init(true, BeamFiles) -> %% Attempt to start the cover server, then set it's group leader to %% .eunit/cover.log, so all cover log messages will go there instead of - %% to stdout. - {_,CoverPid} = cover:start(), + %% to stdout. If the cover server is already started we'll reuse that + %% pid. + {ok, CoverPid} = case cover:start() of + {ok, P} -> + {ok, P}; + {error,{already_started, P}} -> + {ok, P}; + {error, Reason} -> + {error, Reason} + end, {ok, F} = file:open( filename:join([?EUNIT_DIR, "cover.log"]),