- %% TODO: add tests for:
- %% - only part of deps fetched
- %% - only part of deps locked
- %% - output only shown once
- %% - modification asterisk on locked file
- -module(rebar_deps_SUITE).
- -compile(export_all).
- -include_lib("common_test/include/ct.hrl").
- -include_lib("eunit/include/eunit.hrl").
-
- all() -> [default_nodep, default_lock].
-
- init_per_suite(Config) ->
- application:start(meck),
- Config.
-
- end_per_suite(_Config) ->
- application:stop(meck).
-
- init_per_testcase(Case, Config) ->
- meck:new(io, [no_link, passthrough, unstick]),
- setup_project(Case, Config).
-
- end_per_testcase(_, Config) ->
- meck:unload(),
- Config.
-
- config_content() ->
- [{deps, [
- {src_a, ".*", {git, "https://example.org/ferd/src_a.git", {branch, "master"}}},
- {src_b, {git, "https://example.org/ferd/src_b.git", {branch, "master"}}},
- {pkg_a, "1.0.0"}
- ]},
- {profiles,
- [{test,
- [{deps, [
- {tdep, {git, "git://example.org/ferd/tdep.git", {tag, "0.8.2"}}}
- ]}]
- }]}
- ].
-
- setup_project(Case, Config0) ->
- Config = rebar_test_utils:init_rebar_state(
- Config0,
- atom_to_list(Case)++"_"
- ),
- AppDir = ?config(apps, Config),
- rebar_test_utils:create_app(AppDir, "A", "0.0.0", [kernel, stdlib]),
- TopDeps = proplists:get_value(deps, config_content()),
- StringDeps = [erlang:setelement(1, Dep, atom_to_list(element(1,Dep)))
- || Dep <- TopDeps],
- RebarConf = rebar_test_utils:create_config(AppDir, [{deps, TopDeps}]),
- mock_git_resource:mock([{deps, lists:filter(fun src_dep/1, StringDeps)}]),
- mock_pkg_resource:mock([{pkgdeps,
- [{{ec_cnv:to_binary(N),
- ec_cnv:to_binary(V)},[]}
- || {N,V} <- lists:filter(fun pkg_dep/1, StringDeps)]}]),
- [{rebarconfig, RebarConf} | Config].
-
- src_dep(Dep) ->
- case element(1, Dep) of
- "src_"++_ -> true;
- _ -> false
- end.
-
- pkg_dep(Dep) ->
- case element(1, Dep) of
- "pkg_"++_ -> true;
- _ -> false
- end.
-
- default_nodep(Config) ->
- {ok, RebarConfig} = file:consult(?config(rebarconfig, Config)),
- rebar_test_utils:run_and_check(
- Config, RebarConfig, ["deps"], {ok, []}
- ),
- History = meck:history(io),
- Strings = [io_lib:format(Str, Args) || {_, {io, format, [Str, Args]}, _} <- History],
- {match, _} = re:run(Strings, "src_a\\* \\(git source\\)"),
- {match, _} = re:run(Strings, "src_b\\* \\(git source\\)"),
- {match, _} = re:run(Strings, "pkg_a\\* \\(package 1.0.0\\)").
-
- default_lock(Config) ->
- {ok, RebarConfig} = file:consult(?config(rebarconfig, Config)),
- rebar_test_utils:run_and_check(
- Config, RebarConfig, ["lock"], {ok, []}
- ),
- rebar_test_utils:run_and_check(
- Config, RebarConfig, ["deps"], {ok, []}
- ),
- History = meck:history(io),
- Strings = [io_lib:format(Str, Args) || {_, {io, format, [Str, Args]}, _} <- History],
- {match, _} = re:run(Strings, "src_a\\ \\(locked git source\\)"),
- {match, _} = re:run(Strings, "src_b\\ \\(locked git source\\)"),
- {match, _} = re:run(Strings, "pkg_a\\ \\(locked package 1.0.0\\)").
|