diff options
| author | Tristan Sloughter <t@crashfast.com> | 2015-03-02 07:56:47 -0600 | 
|---|---|---|
| committer | Tristan Sloughter <t@crashfast.com> | 2015-03-02 08:19:23 -0600 | 
| commit | 80f276e5e51379b6aae59f99474d25da68f0227a (patch) | |
| tree | 000804e06a711f99e3e2400f5cfaf062b0907b34 | |
| parent | 71d70fca1f1182b8f4919e2b3f5a7ff277700271 (diff) | |
don't replace non-string list with empty list in profile merge
| -rw-r--r-- | src/rebar_state.erl | 7 | ||||
| -rw-r--r-- | test/rebar_profiles_SUITE.erl | 12 | 
2 files changed, 17 insertions, 2 deletions
| diff --git a/src/rebar_state.erl b/src/rebar_state.erl index 09f1c43..2f8ab59 100644 --- a/src/rebar_state.erl +++ b/src/rebar_state.erl @@ -204,6 +204,13 @@ apply_profiles(State=#state_t{opts=Opts, current_profiles=CurrentProfiles}, Prof  merge_opts(Profile, NewOpts, OldOpts) ->      Opts = dict:merge(fun(_Key, NewValue, OldValue) when is_list(NewValue) ->                                case io_lib:printable_list(NewValue) of +                                  true when NewValue =:= [] -> +                                      case io_lib:printable_list(OldValue) of +                                          true -> +                                              NewValue; +                                          false -> +                                              OldValue +                                      end;                                    true ->                                        NewValue;                                    false -> diff --git a/test/rebar_profiles_SUITE.erl b/test/rebar_profiles_SUITE.erl index 0b378cb..03a8090 100644 --- a/test/rebar_profiles_SUITE.erl +++ b/test/rebar_profiles_SUITE.erl @@ -85,10 +85,14 @@ profile_merge_keys(Config) ->  profile_merges(_Config) ->      RebarConfig = [{test1, [{key1, 1, 2}, key2]},                     {test2, "hello"}, +                   {test3, [key3]}, +                   {test4, "oldvalue"},                     {profiles,                      [{profile1,                        [{test1, [{key3, 5}, key1]}]}, -                     {profile2, [{test2, "goodbye"}]}]}], +                     {profile2, [{test2, "goodbye"}, +                                 {test3, []}, +                                 {test4, []}]}]}],      State = rebar_state:new(RebarConfig),      State1 = rebar_state:apply_profiles(State, [profile1, profile2]), @@ -97,4 +101,8 @@ profile_merges(_Config) ->                   lists:sort(rebar_state:get(State1, test1))),      %% Use new value for strings -    "goodbye" = rebar_state:get(State1, test2). +    "goodbye" = rebar_state:get(State1, test2), + +    %% Check that a newvalue of []/"" doesn't override non-string oldvalues +    [key3] = rebar_state:get(State1, test3), +    [] = rebar_state:get(State1, test4). | 
