Skip to content

Commit

Permalink
Add test case for relx overlay vars
Browse files Browse the repository at this point in the history
Makes use of several var types: integers,
strings, binaries, binary strings and tuples.
  • Loading branch information
lrascao committed Jan 27, 2016
1 parent 964da8c commit a86b5f5
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 7 deletions.
51 changes: 50 additions & 1 deletion test/rebar_release_SUITE.erl
Expand Up @@ -10,7 +10,8 @@ all() -> [release,
profile_ordering_sys_config_extend,
profile_ordering_sys_config_extend_3_tuple_merge,
extend_release,
user_output_dir, profile_overlays].
user_output_dir, profile_overlays,
overlay_vars].

init_per_testcase(Case, Config0) ->
Config = rebar_test_utils:init_rebar_state(Config0),
Expand Down Expand Up @@ -215,3 +216,51 @@ profile_overlays(Config) ->
{dir, filename:join(ReleaseDir, "otherrandomdir")},
{dir, filename:join(ReleaseDir, "randomdir")}]}
).

overlay_vars(Config) ->
AppDir = ?config(apps, Config),
Name = ?config(name, Config),
Vsn = "1.0.0",
{ok, RebarConfig} =
file:consult(rebar_test_utils:create_config(AppDir,
[{relx, [{release, {list_to_atom(Name), Vsn},
[list_to_atom(Name)]},
{overlay, [
{template, "config/app.config",
"releases/{{release_version}}/sys.config"}
]},
{overlay_vars, "config/vars.config"},
{lib_dirs, [AppDir]}]}
])),

ok = filelib:ensure_dir(filename:join([AppDir, "config", "dummy"])),

OverlayVars = [{var_int, 1},
{var_string, "test"},
{var_bin_string, <<"test">>},
{var_tuple, {t, ['atom']}},
{var_list, [a, b, c, 'd']},
{var_bin, <<23, 24, 25>>}],
rebar_test_utils:create_config(AppDir,
filename:join([AppDir, "config", "vars.config"]),
OverlayVars),

AppConfig = [[{var_int, {{var_int}}},
{var_string, {{var_string}}},
{var_bin_string, {{var_bin_string}}},
{var_tuple, {{var_tuple}}},
{var_list, {{var_list}}},
{var_bin, {{var_bin}}}]],
rebar_test_utils:create_config(AppDir,
filename:join([AppDir, "config", "app.config"]),
AppConfig),

rebar_test_utils:run_and_check(
Config, RebarConfig,
["release"],
{ok, [{release, list_to_atom(Name), Vsn, false}]}),

%% now consult the sys.config file to make sure that is has the expected
%% format
{ok, OverlayVars} = file:consult("./_build/default/rel/" ++ Name ++
"/releases/" ++ Vsn ++ "/sys.config").
15 changes: 9 additions & 6 deletions test/rebar_test_utils.erl
Expand Up @@ -3,8 +3,8 @@
-include_lib("eunit/include/eunit.hrl").
-export([init_rebar_state/1, init_rebar_state/2, run_and_check/4, check_results/3]).
-export([expand_deps/2, flat_deps/1, top_level_deps/1]).
-export([create_app/4, create_eunit_app/4, create_empty_app/4, create_config/2,
package_app/3]).
-export([create_app/4, create_eunit_app/4, create_empty_app/4,
create_config/2, create_config/3, package_app/3]).
-export([create_random_name/1, create_random_vsn/0, write_src_file/2]).

%%%%%%%%%%%%%%
Expand Down Expand Up @@ -104,11 +104,14 @@ create_empty_app(AppDir, Name, Vsn, Deps) ->
%% each of which will be dumped as a consult file. For example, the list
%% `[a, b, c]' will return the consult file `a. b. c.'.
create_config(AppDir, Contents) ->
Conf = filename:join([AppDir, "rebar.config"]),
ok = filelib:ensure_dir(Conf),
ConfFilename = filename:join([AppDir, "rebar.config"]),
create_config(AppDir, ConfFilename, Contents).

create_config(_AppDir, ConfFilename, Contents) ->
ok = filelib:ensure_dir(ConfFilename),
Config = lists:flatten([io_lib:fwrite("~p.~n", [Term]) || Term <- Contents]),
ok = ec_file:write(Conf, Config),
Conf.
ok = ec_file:write(ConfFilename, Config),
ConfFilename.

%% @doc Util to create a random variation of a given name.
create_random_name(Name) ->
Expand Down

0 comments on commit a86b5f5

Please sign in to comment.