summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_relx.erl6
-rw-r--r--test/rebar_release_SUITE.erl25
2 files changed, 30 insertions, 1 deletions
diff --git a/src/rebar_relx.erl b/src/rebar_relx.erl
index abfb8fc..17c0bd6 100644
--- a/src/rebar_relx.erl
+++ b/src/rebar_relx.erl
@@ -6,6 +6,10 @@
-export([do/4,
format_error/1]).
+-ifdef(TEST).
+-export([merge_overlays/1]).
+-endif.
+
-include("rebar.hrl").
%% ===================================================================
@@ -64,5 +68,5 @@ merge_overlays(Config) ->
(_) -> false
end, Config),
%% Have profile overlay entries come before others to match how profiles work elsewhere
- NewOverlay = lists:reverse(lists:flatmap(fun({overlay, Overlay}) -> Overlay end, Overlays)),
+ NewOverlay = lists:flatmap(fun({overlay, Overlay}) -> Overlay end, lists:reverse(Overlays)),
[{overlay, NewOverlay} | Others].
diff --git a/test/rebar_release_SUITE.erl b/test/rebar_release_SUITE.erl
index 1125a7e..e41339b 100644
--- a/test/rebar_release_SUITE.erl
+++ b/test/rebar_release_SUITE.erl
@@ -11,6 +11,7 @@ all() -> [release,
profile_ordering_sys_config_extend_3_tuple_merge,
extend_release,
user_output_dir, profile_overlays,
+ profile_overlay_merge,
overlay_vars].
init_per_testcase(Case, Config0) ->
@@ -217,6 +218,30 @@ profile_overlays(Config) ->
{dir, filename:join(ReleaseDir, "randomdir")}]}
).
+profile_overlay_merge (_Config) ->
+ % when profile and relx overlays both exist, the profile overlays should be
+ % first, then the relx overlays, all the rest of the config should come
+ % after, rebar_relx:merge_overlays/1 should do this.
+ RelxOverlay = [{mkdir, "1_from_relx"}, {mkdir, "2_from_relx"}],
+ ProfileOverlay = [{mkdir, "0_from_other_profile"}],
+ OtherConfig = [{other1, config}, {other2, config}],
+
+ % test with no overlays
+ ?assertEqual([{overlay,[]}] ++ OtherConfig,
+ rebar_relx:merge_overlays(OtherConfig)),
+
+ % test with relx only, just move overlays to the top
+ RelxOnly = OtherConfig ++ [{overlay, RelxOverlay}],
+ ?assertEqual([{overlay, RelxOverlay}]++OtherConfig,
+ rebar_relx:merge_overlays(RelxOnly)),
+
+ % now test with a profile (profiles end up after relx overlays
+ ProfilesToMerge = OtherConfig ++
+ [{overlay, RelxOverlay},
+ {overlay, ProfileOverlay}],
+ ?assertEqual([{overlay, ProfileOverlay ++ RelxOverlay}] ++ OtherConfig,
+ rebar_relx:merge_overlays(ProfilesToMerge)).
+
overlay_vars(Config) ->
AppDir = ?config(apps, Config),
Name = ?config(name, Config),