summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2018-04-20 21:03:05 -0400
committerFred Hebert <mononcqc@ferd.ca>2018-04-20 21:11:55 -0400
commit543fe579a6d7c71fb4ed6a898540b573f6255dd0 (patch)
tree8661d7683a6f4de5a58a2c4999503bc950d4da2b /test
parent9cfe33f97e83f060cb4394f0089c2998994af7f4 (diff)
Fix precedence rules of erl_opts for test profile
When adding the 'TEST' macro to the test profile, we mistakenly sourced the erl_opts values from the base profile rather than the test profile itself. This means that in cases where the base profile set an option such as 'no_debug_info' and a profile overrode it with 'debug_info', the default options would get injected within the test profile, and broke the precedence rules, yielding incompatible values. This patch fixes things by adding the macro to the values sourced from the test profile itself, fixing the issue.
Diffstat (limited to 'test')
-rw-r--r--test/rebar_profiles_SUITE.erl32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/rebar_profiles_SUITE.erl b/test/rebar_profiles_SUITE.erl
index ddc3cf1..512832a 100644
--- a/test/rebar_profiles_SUITE.erl
+++ b/test/rebar_profiles_SUITE.erl
@@ -28,6 +28,7 @@
test_profile_erl_opts_order_4/1,
test_profile_erl_opts_order_5/1,
test_erl_opts_debug_info/1,
+ test_profile_erl_opts_precedence/1,
first_files_exception/1]).
-include_lib("common_test/include/ct.hrl").
@@ -52,6 +53,7 @@ all() ->
test_profile_erl_opts_order_4,
test_profile_erl_opts_order_5,
test_erl_opts_debug_info,
+ test_profile_erl_opts_precedence,
first_files_exception].
init_per_suite(Config) ->
@@ -527,6 +529,36 @@ test_erl_opts_debug_info(_Config) ->
no_debug_info,b,c,{debug_info,{mod,"123"}}])),
ok.
+test_profile_erl_opts_precedence(Config) ->
+ AppDir = ?config(apps, Config),
+ Name = rebar_test_utils:create_random_name("profile_new_key_"),
+ Vsn = rebar_test_utils:create_random_vsn(),
+ rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
+ RebarConfig = [{erl_opts, [no_debug_info]},
+ {profiles, [
+ {test, [{erl_opts, [debug_info, {d,'HI'}]}]},
+ {other, [{erl_opts, [debug_info, {d,'HI'}]}]}
+ ]}],
+ {ok, State1} = rebar_test_utils:run_and_check(
+ Config, RebarConfig, ["as", "test", "compile"], return
+ ),
+ {ok, State2} = rebar_test_utils:run_and_check(
+ Config, RebarConfig, ["as", "other", "compile"], return
+ ),
+ {ok, State3} = rebar_test_utils:run_and_check(
+ Config, RebarConfig, ["compile"], return
+ ),
+ Opts1 = rebar_state:opts(State1),
+ Opts2 = rebar_state:opts(State2),
+ Opts3 = rebar_state:opts(State3),
+ ErlOpts1 = rebar_opts:erl_opts(Opts1),
+ ErlOpts2 = rebar_opts:erl_opts(Opts2),
+ ErlOpts3 = rebar_opts:erl_opts(Opts3),
+ ?assertEqual([{d,'TEST'}, debug_info, {d,'HI'}], ErlOpts1),
+ ?assertEqual([debug_info, {d,'HI'}], ErlOpts2),
+ ?assertEqual([], ErlOpts3),
+ ok.
+
first_files_exception(_Config) ->
RebarConfig = [{erl_first_files, ["c","a","b"]},
{mib_first_files, ["c","a","b"]},