diff options
author | Tristan Sloughter <[email protected]> | 2016-09-25 09:01:09 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2016-09-25 09:01:09 -0700 |
commit | c7e6d8119037d4d4ab117381027f379de9a6a5df (patch) | |
tree | c39c9d597e44bc39dcd7765786521b0f15c9e58b /test/rlx_archive_SUITE.erl | |
parent | 43056adc09c37ee2f1e9f640f7ee20d7609f2cbf (diff) | |
parent | 3b25185d295357ac5d038c15c4fc3d599fcd98cc (diff) | |
download | relx-c7e6d8119037d4d4ab117381027f379de9a6a5df.tar.gz relx-c7e6d8119037d4d4ab117381027f379de9a6a5df.tar.bz2 relx-c7e6d8119037d4d4ab117381027f379de9a6a5df.zip |
Merge pull request #512 from lrascao/feature/increase_test_coverage
Increase test coverage
Diffstat (limited to 'test/rlx_archive_SUITE.erl')
-rw-r--r-- | test/rlx_archive_SUITE.erl | 94 |
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)). |