浏览代码

Implement some test on profiles deduplication

pull/350/head
Viacheslav V. Kovalev 10 年前
提交者 Viacheslav Kovalev
父节点
当前提交
83d738a829
共有 2 个文件被更改,包括 113 次插入2 次删除
  1. +91
    -0
      test/rebar_profiles_SUITE.erl
  2. +22
    -2
      test/rebar_utils_SUITE.erl

+ 91
- 0
test/rebar_profiles_SUITE.erl 查看文件

@ -7,7 +7,10 @@
all/0,
profile_new_key/1,
profile_merge_keys/1,
explicit_profile_deduplicate_deps/1,
implicit_profile_deduplicate_deps/1,
profile_merges/1,
same_profile_deduplication/1,
add_to_profile/1,
add_to_existing_profile/1,
profiles_remain_applied_with_config_present/1,
@ -22,6 +25,8 @@
all() ->
[profile_new_key, profile_merge_keys, profile_merges,
explicit_profile_deduplicate_deps, implicit_profile_deduplicate_deps,
same_profile_deduplication,
add_to_profile, add_to_existing_profile,
profiles_remain_applied_with_config_present,
test_profile_applied_at_completion,
@ -95,6 +100,67 @@ profile_merge_keys(Config) ->
,{dep, "a", "1.0.0"}
,{dep, "b", "2.0.0"}]}).
explicit_profile_deduplicate_deps(Config) ->
AppDir = ?config(apps, Config),
AllDeps = rebar_test_utils:expand_deps(git, [{"a", "1.0.0", []}
,{"a", "2.0.0", []}
,{"b", "1.0.0", []}
,{"b", "2.0.0", []}]),
mock_git_resource:mock([{deps, rebar_test_utils:flat_deps(AllDeps)}]),
Name = rebar_test_utils:create_random_name("explicit_profile_deduplicate_deps_"),
Vsn = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
FooDeps = rebar_test_utils:top_level_deps(
rebar_test_utils:expand_deps(git, [{"a", "1.0.0", []},
{"b", "2.0.0", []}])),
BarDeps = rebar_test_utils:top_level_deps(
rebar_test_utils:expand_deps(git, [{"b", "1.0.0", []}])),
RebarConfig = [{profiles,
[{foo,
[{deps, FooDeps}]},
{bar,
[{deps, BarDeps}]}]}],
rebar_test_utils:run_and_check(Config, RebarConfig,
["as", "bar,foo,bar", "compile"], {ok, [{app, Name}
,{dep, "a", "1.0.0"}
,{dep, "b", "1.0.0"}]}).
implicit_profile_deduplicate_deps(Config) ->
AppDir = ?config(apps, Config),
AllDeps = rebar_test_utils:expand_deps(git, [{"a", "1.0.0", []}
,{"a", "2.0.0", []}
,{"b", "1.0.0", []}
,{"b", "2.0.0", []}]),
mock_git_resource:mock([{deps, rebar_test_utils:flat_deps(AllDeps)}]),
Name = rebar_test_utils:create_random_name("implicit_profile_deduplicate_deps_"),
Vsn = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
TestDeps = rebar_test_utils:top_level_deps(
rebar_test_utils:expand_deps(git, [{"a", "1.0.0", []},
{"b", "2.0.0", []}])),
ProfileDeps = rebar_test_utils:top_level_deps(
rebar_test_utils:expand_deps(git, [{"b", "1.0.0", []}])),
RebarConfig = [{profiles,
[{test,
[{deps, TestDeps}]},
{bar,
[{deps, ProfileDeps}]}]}],
rebar_test_utils:run_and_check(Config, RebarConfig,
["as", "test,bar", "eunit"], {ok, [{app, Name}
,{dep, "a", "1.0.0"}
,{dep, "b", "2.0.0"}]}).
profile_merges(_Config) ->
RebarConfig = [{test1, [{key1, 1, 2}, key2]},
{test2, "hello"},
@ -127,6 +193,31 @@ profile_merges(_Config) ->
[{key5, false}, {key5, true}] = rebar_state:get(State1, test5),
[{key6, true}, {key6, false}] = rebar_state:get(State1, test6).
same_profile_deduplication(_Config) ->
RebarConfig = [{test1, [{key1, 1, 2}, key2]},
{test2, [foo]},
{test3, [key3]},
{profiles,
[{profile1,
[{test1, [{key3, 5}, key1]},
{test2, [bar]},
{test3, []}
]}]
}],
State = rebar_state:new(RebarConfig),
State1 = rebar_state:apply_profiles(State, [profile1, profile1, profile1]),
?assertEqual([default, profile1], rebar_state:current_profiles(State1)),
%% Combine lists
?assertEqual(lists:sort([key1, key2, {key1, 1, 2}, {key3, 5}]),
lists:sort(rebar_state:get(State1, test1))),
%% Check that a newvalue of []/"" doesn't override non-string oldvalues
?assertEqual([key3], rebar_state:get(State1, test3)),
?assertEqual([foo, bar], rebar_state:get(State1, test2)).
add_to_profile(_Config) ->
RebarConfig = [{foo, true}, {bar, false}],
State = rebar_state:new(RebarConfig),

+ 22
- 2
test/rebar_utils_SUITE.erl 查看文件

@ -21,7 +21,9 @@
task_with_flag_with_trailing_comma/1,
task_with_flag_with_commas/1,
task_with_multiple_flags/1,
special_task_do/1]).
special_task_do/1,
trivial_umerge/1,
three_tuple_umerge/1]).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
@ -29,7 +31,10 @@
all() ->
[{group, args_to_tasks}].
[{group, args_to_tasks},
trivial_umerge,
three_tuple_umerge
].
groups() ->
[{args_to_tasks, [], [empty_arglist,
@ -118,3 +123,18 @@ special_task_do(_Config) ->
"do",
"bar,",
"baz"]).
trivial_umerge(_Config) ->
New = [{key, foo}],
Old = [{key, bar}],
Result = rebar_utils:tup_umerge(New, Old),
?assertEqual([{key, foo}], Result).
three_tuple_umerge(_Config) ->
New = rebar_utils:tup_sort([{d, foo, true}, {d, bar, true}]),
Old = rebar_utils:tup_sort([{d, foo, false}, {d, bar, true}]),
Result = rebar_utils:tup_umerge(New, Old),
?assertEqual(
rebar_utils:tup_sort([{do, foo, true}, {d, bar, true}]),
Result
).

正在加载...
取消
保存