Ver código fonte

Add test case for relx overlay vars

Makes use of several var types: integers,
strings, binaries, binary strings and tuples.
pull/1041/head
Luis Rascao 9 anos atrás
pai
commit
f60c522cdc
2 arquivos alterados com 65 adições e 7 exclusões
  1. +56
    -1
      test/rebar_release_SUITE.erl
  2. +9
    -6
      test/rebar_test_utils.erl

+ 56
- 1
test/rebar_release_SUITE.erl Ver arquivo

@ -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),
@ -215,3 +216,57 @@ 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, filename:join([AppDir, "config/app.config"]),
"releases/{{release_version}}/sys.config"}
]},
{overlay_vars, filename:join([AppDir, "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
ExpectedSysconfig = [{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>>}],
{ok, [ExpectedSysconfig]} = file:consult(filename:join([AppDir, "_build/default/rel",
Name, "releases", Vsn, "sys.config"])).

+ 9
- 6
test/rebar_test_utils.erl Ver arquivo

@ -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]).
%%%%%%%%%%%%%%
@ -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) ->

Carregando…
Cancelar
Salvar