summaryrefslogtreecommitdiff
path: root/test/rebar_release_SUITE.erl
diff options
context:
space:
mode:
authorStuart Thackray <stuart.thackray@gmail.com>2018-12-11 08:53:29 +0200
committerStuart Thackray <stuart.thackray@gmail.com>2018-12-11 08:53:29 +0200
commitebfa797c1f5d038b99beaf658757d974412a15c7 (patch)
tree9765880a7f0119c265d85f8bac7afea8d9542080 /test/rebar_release_SUITE.erl
parent71187514dabdd94aa333495d92df84a2e750099f (diff)
parent8e28561d4e14ea85d42d17ab5a0f17f5f1c696d2 (diff)
Update from Upstream
Diffstat (limited to 'test/rebar_release_SUITE.erl')
-rw-r--r--test/rebar_release_SUITE.erl65
1 files changed, 58 insertions, 7 deletions
diff --git a/test/rebar_release_SUITE.erl b/test/rebar_release_SUITE.erl
index 1125a7e..1bcc61e 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) ->
@@ -199,13 +200,34 @@ profile_overlays(Config) ->
AppDir = ?config(apps, Config),
Name = ?config(name, Config),
Vsn = "1.0.0",
+ file:write_file(filename:join(AppDir, "dev.file"), "dev.\n"),
+ file:write_file(filename:join(AppDir, "prod.file"), "prod.\n"),
+ file:write_file(filename:join(AppDir, "dev.vars"), "{env, \"dev\"}.\n"),
+ file:write_file(filename:join(AppDir, "prod.vars"), "{env, \"prod\"}.\n"),
{ok, RebarConfig} =
- file:consult(rebar_test_utils:create_config(AppDir,
- [{relx, [{release, {list_to_atom(Name), Vsn},
- [list_to_atom(Name)]},
- {overlay, [{mkdir, "randomdir"}]},
- {lib_dirs, [AppDir]}]},
- {profiles, [{prod, [{relx, [{overlay, [{mkdir, "otherrandomdir"}]}]}]}]}])),
+ file:consult(rebar_test_utils:create_config(AppDir,
+ %% Paths are relative, but to cwd in relx, not the project root as
+ %% seen by rebar3 (in non-test cases, they're the same).
+ %% Work around by being explicit.
+ [{relx, [{release, {list_to_atom(Name), Vsn},
+ [list_to_atom(Name)]},
+ {overlay_vars, filename:join(AppDir, "dev.vars")},
+ {overlay, [{mkdir, "randomdir"},
+ {copy, filename:join(AppDir,"./dev.file"), "profile.file"},
+ {copy, filename:join(AppDir,"./dev.file"), "{{env}}.file"},
+ {chmod, 8#00770, "profile.file"}]},
+ {lib_dirs, [AppDir]}]},
+ {profiles, [{prod,
+ [{relx, [
+ {overlay_vars, filename:join(AppDir, "prod.vars")},
+ {overlay, [{mkdir, "otherrandomdir"},
+ {copy, filename:join(AppDir, "./prod.file"), "{{env}}.file"},
+ {copy, filename:join(AppDir, "./prod.file"), "profile.file"},
+ {chmod, 8#00770, "profile.file"}]}
+
+ ]}]
+ }]}
+ ])),
ReleaseDir = filename:join([AppDir, "./_build/prod/rel/", Name]),
@@ -215,7 +237,36 @@ profile_overlays(Config) ->
{ok, [{release, list_to_atom(Name), Vsn, false},
{dir, filename:join(ReleaseDir, "otherrandomdir")},
{dir, filename:join(ReleaseDir, "randomdir")}]}
- ).
+ ),
+ ?assertMatch({ok,[prod]},
+ file:consult(filename:join(ReleaseDir, "profile.file"))),
+ ?assertMatch({ok,[prod]},
+ file:consult(filename:join(ReleaseDir, "prod.file"))),
+ ok.
+
+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),