summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_prv_eunit.erl17
-rw-r--r--src/rebar_templater.erl11
2 files changed, 21 insertions, 7 deletions
diff --git a/src/rebar_prv_eunit.erl b/src/rebar_prv_eunit.erl
index 7d44137..65addc3 100644
--- a/src/rebar_prv_eunit.erl
+++ b/src/rebar_prv_eunit.erl
@@ -83,13 +83,16 @@ run_tests(State, Tests) ->
EUnitOpts = resolve_eunit_opts(State),
?DEBUG("eunit_tests ~p", [T]),
?DEBUG("eunit_opts ~p", [EUnitOpts]),
- Result = eunit:test(T, EUnitOpts),
- ok = maybe_write_coverdata(State),
- case handle_results(Result) of
- {error, Reason} ->
- ?PRV_ERROR(Reason);
- ok ->
- {ok, State}
+ try eunit:test(T, EUnitOpts) of
+ Result ->
+ ok = maybe_write_coverdata(State),
+ case handle_results(Result) of
+ {error, Reason} ->
+ ?PRV_ERROR(Reason);
+ ok ->
+ {ok, State}
+ end
+ catch error:badarg -> ?PRV_ERROR({error, badarg})
end.
-spec format_error(any()) -> iolist().
diff --git a/src/rebar_templater.erl b/src/rebar_templater.erl
index 9b33ec5..1c28788 100644
--- a/src/rebar_templater.erl
+++ b/src/rebar_templater.erl
@@ -334,8 +334,19 @@ find_plugin_templates(State) ->
|| App <- rebar_state:all_plugin_deps(State),
Priv <- [rebar_app_info:priv_dir(App)],
Priv =/= undefined,
+ File <- rebar_utils:find_files(Priv, ?TEMPLATE_RE)]
+ ++ %% and add global plugins too
+ [{plugin, File}
+ || PSource <- rebar_state:get(State, {plugins, global}, []),
+ Plugin <- [plugin_provider(PSource)],
+ is_atom(Plugin),
+ Priv <- [code:priv_dir(Plugin)],
+ Priv =/= undefined,
File <- rebar_utils:find_files(Priv, ?TEMPLATE_RE)].
+plugin_provider(P) when is_atom(P) -> P;
+plugin_provider(T) when is_tuple(T) -> element(1, T).
+
%% Take an existing list of templates and tag them by name the way
%% the user would enter it from the CLI
tag_names(List) ->