aboutsummaryrefslogtreecommitdiffstats
path: root/test/rlx_archive_SUITE.erl
diff options
context:
space:
mode:
authorLuis Rascao <[email protected]>2016-09-21 22:38:55 +0100
committerLuis Rascao <[email protected]>2016-09-25 00:06:51 +0100
commit3b25185d295357ac5d038c15c4fc3d599fcd98cc (patch)
treec39c9d597e44bc39dcd7765786521b0f15c9e58b /test/rlx_archive_SUITE.erl
parent43056adc09c37ee2f1e9f640f7ee20d7609f2cbf (diff)
downloadrelx-3b25185d295357ac5d038c15c4fc3d599fcd98cc.tar.gz
relx-3b25185d295357ac5d038c15c4fc3d599fcd98cc.tar.bz2
relx-3b25185d295357ac5d038c15c4fc3d599fcd98cc.zip
Increase test coverage
Diffstat (limited to 'test/rlx_archive_SUITE.erl')
-rw-r--r--test/rlx_archive_SUITE.erl94
1 files changed, 92 insertions, 2 deletions
diff --git a/test/rlx_archive_SUITE.erl b/test/rlx_archive_SUITE.erl
index 2373fa0..08da2b8 100644
--- a/test/rlx_archive_SUITE.erl
+++ b/test/rlx_archive_SUITE.erl
@@ -10,7 +10,8 @@
basic_tar/1,
exclude_erts/1,
exclude_src/1,
- include_src/1]).
+ include_src/1,
+ overlay_archive/1]).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
@@ -35,7 +36,8 @@ init_per_testcase(_, Config) ->
{state, State1} | Config].
all() ->
- [basic_tar, exclude_erts, exclude_src, include_src].
+ [basic_tar, exclude_erts, exclude_src, include_src,
+ overlay_archive].
basic_tar(Config) ->
LibDir1 = proplists:get_value(lib1, Config),
@@ -227,3 +229,91 @@ include_src(Config) ->
?assert(lists:any(fun(X) -> re:run(X, "lib/stdlib-.*/src/.*") =/= nomatch end, Files)),
?assert(lists:any(fun(X) -> re:run(X, "lib/kernel-.*/src/.*") =/= nomatch end, Files)),
?assert(filelib:is_regular(TarFile)).
+
+overlay_archive(Config) ->
+ LibDir1 = proplists:get_value(lib1, Config),
+
+ rlx_test_utils:create_app(LibDir1, "goal_app_1", "0.0.1", [stdlib,kernel,non_goal_1], []),
+ rlx_test_utils:create_app(LibDir1, "lib_dep_1", "0.0.1", [stdlib,kernel], []),
+ rlx_test_utils:create_app(LibDir1, "goal_app_2", "0.0.1", [stdlib,kernel,goal_app_1,non_goal_2], []),
+ rlx_test_utils:create_app(LibDir1, "non_goal_1", "0.0.1", [stdlib,kernel], [lib_dep_1]),
+ rlx_test_utils:create_app(LibDir1, "non_goal_2", "0.0.1", [stdlib,kernel], []),
+
+ ConfigFile = filename:join([LibDir1, "relx.config"]),
+ OverlayVars1 = filename:join([LibDir1, "vars1.config"]),
+ OverlayVars2 = filename:join([LibDir1, "vars2.config"]),
+ OverlayVars3 = filename:join([LibDir1, "vars3.config"]),
+ Template = filename:join([LibDir1, "test_template"]),
+ TestDir = "first_test_dir",
+ TestFile = "test_file",
+ TestDirFull = filename:join([LibDir1, TestDir]),
+ TestFileFull = filename:join(TestDirFull, TestFile),
+ SecondTestDir = "second_test_dir",
+ rlx_test_utils:write_config(ConfigFile,
+ [{overlay_vars, [OverlayVars1, OverlayVars2]},
+ {overlay, [{mkdir, "{{target_dir}}/fooo"},
+ {copy, OverlayVars1,
+ "{{target_dir}}/{{foo_dir}}/vars1.config"},
+ {copy, OverlayVars1,
+ "{{target_dir}}/{{yahoo}}/"},
+ {link, OverlayVars1,
+ "{{target_dir}}/{{yahoo}}/vars.link.config"},
+ {copy, TestDirFull,
+ "{{target_dir}}/"++SecondTestDir++"/"},
+ {template, Template,
+ "{{target_dir}}/test_template_resolved"},
+ {template, Template,
+ "bin/{{default_release_name}}-{{default_release_version}}"}]},
+ {release, {foo, "0.0.1"},
+ [goal_app_1,
+ goal_app_2]}]),
+
+ VarsFile1 = filename:join([LibDir1, "vars1.config"]),
+ rlx_test_utils:write_config(VarsFile1, [{yahoo, "yahoo"},
+ {yahoo2, [{foo, "bar"}]},
+ {foo_yahoo, "foo_{{yahoo}}"},
+ {foo_dir, "foodir"}]),
+
+ VarsFile2 = filename:join([LibDir1, "vars2.config"]),
+ rlx_test_utils:write_config(VarsFile2, [{google, "yahoo"},
+ {yahoo2, "foo"},
+ OverlayVars3]),
+
+ VarsFile3 = filename:join([LibDir1, "vars3.config"]),
+ rlx_test_utils:write_config(VarsFile3, [{google, "yahoo"},
+ {yahoo4, "{{yahoo}}/{{yahoo2}}4"}]),
+
+ ok = rlx_util:mkdir_p(TestDirFull),
+ ok = file:write_file(TestFileFull, rlx_test_utils:test_template_contents()),
+
+ TemplateFile = filename:join([LibDir1, "test_template"]),
+ ok = file:write_file(TemplateFile, rlx_test_utils:test_template_contents()),
+ {ok, FileInfo} = file:read_file_info(TemplateFile),
+ ok = file:write_file_info(TemplateFile, FileInfo#file_info{mode=8#00777}),
+
+ OutputDir = filename:join([proplists:get_value(priv_dir, Config),
+ rlx_test_utils:create_random_name("relx-output")]),
+
+ {ok, State} = relx:do([{relname, foo},
+ {relvsn, "0.0.1"},
+ {goals, []},
+ {lib_dirs, [LibDir1]},
+ {log_level, 3},
+ {output_dir, OutputDir},
+ {config, ConfigFile}], ["release", "tar"]),
+
+ [{{foo, "0.0.1"}, Release}] = ec_dictionary:to_list(rlx_state:realized_releases(State)),
+ AppSpecs = rlx_release:applications(Release),
+ ?assert(lists:keymember(stdlib, 1, AppSpecs)),
+ ?assert(lists:keymember(kernel, 1, AppSpecs)),
+ ?assert(lists:member({non_goal_1, "0.0.1"}, AppSpecs)),
+ ?assert(lists:member({non_goal_2, "0.0.1"}, AppSpecs)),
+ ?assert(lists:member({goal_app_1, "0.0.1"}, AppSpecs)),
+ ?assert(lists:member({goal_app_2, "0.0.1"}, AppSpecs)),
+ ?assert(lists:member({lib_dep_1, "0.0.1", load}, AppSpecs)),
+
+ TarFile = filename:join([OutputDir, "foo", "foo-0.0.1.tar.gz"]),
+ {ok, Files} = erl_tar:table(TarFile, [compressed]),
+ ?assert(lists:any(fun(X) -> re:run(X, "lib/stdlib-.*/src/.*") =/= nomatch end, Files)),
+ ?assert(lists:any(fun(X) -> re:run(X, "lib/kernel-.*/src/.*") =/= nomatch end, Files)),
+ ?assert(filelib:is_regular(TarFile)).