summaryrefslogtreecommitdiff
path: root/src/rebar_prv_eunit.erl
diff options
context:
space:
mode:
authoralisdair sullivan <alisdair.sullivan@askuity.com>2016-03-03 17:39:17 -0800
committeralisdair sullivan <alisdair.sullivan@askuity.com>2016-03-03 17:39:17 -0800
commit0bd5e230d2689831cad1427287f3ecc62482dc1e (patch)
tree4dc24ffa4d7e9e35011cb816a5923120758d8602 /src/rebar_prv_eunit.erl
parentd75fa758d86fa062164671e0154ed1b05691b0f9 (diff)
move definition of 'EUNIT' macro to eunit provider
add definition of 'COMMON_TEST' macro to eunit provider
Diffstat (limited to 'src/rebar_prv_eunit.erl')
-rw-r--r--src/rebar_prv_eunit.erl20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/rebar_prv_eunit.erl b/src/rebar_prv_eunit.erl
index c085ee4..46ea48d 100644
--- a/src/rebar_prv_eunit.erl
+++ b/src/rebar_prv_eunit.erl
@@ -244,9 +244,27 @@ first_files(Opts) ->
EUnitFirstFiles = opts(Opts, eunit_first_files, []),
case append(EUnitFirstFiles, FirstFiles) of
{error, _} = Error -> Error;
- NewFirstFiles -> rebar_opts:set(Opts, erl_first_files, NewFirstFiles)
+ NewFirstFiles -> eunit_macro(rebar_opts:set(Opts, erl_first_files, NewFirstFiles))
end.
+eunit_macro(Opts) ->
+ ErlOpts = opts(Opts, erl_opts, []),
+ NewOpts = safe_define_eunit_macro(ErlOpts),
+ rebar_opts:set(Opts, erl_opts, NewOpts).
+
+safe_define_eunit_macro(Opts) ->
+ %% defining a compile macro twice results in an exception so
+ %% make sure 'EUNIT' is only defined once
+ case test_defined(Opts) of
+ true -> Opts;
+ false -> [{d, 'EUNIT'}|Opts]
+ end.
+
+test_defined([{d, 'EUNIT'}|_]) -> true;
+test_defined([{d, 'EUNIT', true}|_]) -> true;
+test_defined([_|Rest]) -> test_defined(Rest);
+test_defined([]) -> false.
+
append({error, _} = Error, _) -> Error;
append(_, {error, _} = Error) -> Error;
append(A, B) -> A ++ B.