Browse Source

Merge pull request #82 from rebar/checkouts-test

Adding tests for checkouts being found & compiled
pull/63/merge
Fred Hebert 10 years ago
parent
commit
cb400a39dc
2 changed files with 51 additions and 5 deletions
  1. +42
    -4
      test/rebar_compile_SUITE.erl
  2. +9
    -1
      test/rebar_test_utils.erl

+ 42
- 4
test/rebar_compile_SUITE.erl View File

@ -6,7 +6,9 @@
init_per_testcase/2, init_per_testcase/2,
all/0, all/0,
build_basic_app/1, build_basic_app/1,
build_release_apps/1]).
build_release_apps/1,
build_checkout_apps/1,
build_checkout_deps/1]).
-include_lib("common_test/include/ct.hrl"). -include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl"). -include_lib("eunit/include/eunit.hrl").
@ -25,7 +27,8 @@ init_per_testcase(_, Config) ->
rebar_test_utils:init_rebar_state(Config). rebar_test_utils:init_rebar_state(Config).
all() -> all() ->
[build_basic_app, build_release_apps].
[build_basic_app, build_release_apps,
build_checkout_apps, build_checkout_deps].
build_basic_app(Config) -> build_basic_app(Config) ->
AppDir = ?config(apps, Config), AppDir = ?config(apps, Config),
@ -39,10 +42,10 @@ build_basic_app(Config) ->
build_release_apps(Config) -> build_release_apps(Config) ->
AppDir = ?config(apps, Config), AppDir = ?config(apps, Config),
Name1 = rebar_test_utils:create_random_name("app1_"),
Name1 = rebar_test_utils:create_random_name("relapp1_"),
Vsn1 = rebar_test_utils:create_random_vsn(), Vsn1 = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(filename:join([AppDir,Name1]), Name1, Vsn1, [kernel, stdlib]), rebar_test_utils:create_app(filename:join([AppDir,Name1]), Name1, Vsn1, [kernel, stdlib]),
Name2 = rebar_test_utils:create_random_name("app2_"),
Name2 = rebar_test_utils:create_random_name("relapp2_"),
Vsn2 = rebar_test_utils:create_random_vsn(), Vsn2 = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(filename:join([AppDir,Name2]), Name2, Vsn2, [kernel, stdlib]), rebar_test_utils:create_app(filename:join([AppDir,Name2]), Name2, Vsn2, [kernel, stdlib]),
@ -50,3 +53,38 @@ build_release_apps(Config) ->
Config, [], ["compile"], Config, [], ["compile"],
{ok, [{app, Name1}, {app, Name2}]} {ok, [{app, Name1}, {app, Name2}]}
). ).
build_checkout_apps(Config) ->
AppDir = ?config(apps, Config),
CheckoutsDir = ?config(checkouts, Config),
Name1 = rebar_test_utils:create_random_name("checkapp1_"),
Vsn1 = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(filename:join([AppDir,Name1]), Name1, Vsn1, [kernel, stdlib]),
Name2 = rebar_test_utils:create_random_name("checkapp2_"),
Vsn2 = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(filename:join([CheckoutsDir,Name2]), Name2, Vsn2, [kernel, stdlib]),
rebar_test_utils:run_and_check(
Config, [], ["compile"],
{ok, [{app, Name1}, {checkout, Name2}]}
).
build_checkout_deps(Config) ->
AppDir = ?config(apps, Config),
CheckoutsDir = ?config(checkouts, Config),
DepsDir = filename:join([AppDir, "_build", "lib"]),
Name1 = rebar_test_utils:create_random_name("checkapp1_"),
Vsn1 = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(filename:join([AppDir,Name1]), Name1, Vsn1, [kernel, stdlib]),
Name2 = rebar_test_utils:create_random_name("checkapp2_"),
Vsn2 = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(filename:join([CheckoutsDir,Name2]), Name2, Vsn2, [kernel, stdlib]),
rebar_test_utils:create_app(filename:join([DepsDir,Name2]), Name2, Vsn1, [kernel, stdlib]),
rebar_test_utils:run_and_check(
Config, [], ["compile"],
{ok, [{app, Name1}, {checkout, Name2}]}
),
ok = application:load(list_to_atom(Name2)),
Loaded = application:loaded_applications(),
{_, _, Vsn2} = lists:keyfind(list_to_atom(Name2), 1, Loaded).

+ 9
- 1
test/rebar_test_utils.erl View File

@ -19,11 +19,13 @@ init_rebar_state(Config, Name) ->
application:load(rebar), application:load(rebar),
DataDir = ?config(priv_dir, Config), DataDir = ?config(priv_dir, Config),
AppsDir = filename:join([DataDir, create_random_name(Name)]), AppsDir = filename:join([DataDir, create_random_name(Name)]),
CheckoutsDir = filename:join([AppsDir, "_checkouts"]),
ok = ec_file:mkdir_p(AppsDir), ok = ec_file:mkdir_p(AppsDir),
ok = ec_file:mkdir_p(CheckoutsDir),
Verbosity = rebar3:log_level(), Verbosity = rebar3:log_level(),
rebar_log:init(command_line, Verbosity), rebar_log:init(command_line, Verbosity),
State = rebar_state:new([{base_dir, filename:join([AppsDir, "_build"])}]), State = rebar_state:new([{base_dir, filename:join([AppsDir, "_build"])}]),
[{apps, AppsDir}, {state, State} | Config].
[{apps, AppsDir}, {checkouts, CheckoutsDir}, {state, State} | Config].
%% @doc Takes common test config, a rebar config ([] if empty), a command to %% @doc Takes common test config, a rebar config ([] if empty), a command to
%% run ("install_deps", "compile", etc.), and a list of expected applications %% run ("install_deps", "compile", etc.), and a list of expected applications
@ -97,10 +99,13 @@ create_random_vsn() ->
%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%
check_results(AppDir, Expected) -> check_results(AppDir, Expected) ->
BuildDir = filename:join([AppDir, "_build", "lib"]), BuildDir = filename:join([AppDir, "_build", "lib"]),
CheckoutsDir = filename:join([AppDir, "_checkouts"]),
Apps = rebar_app_discover:find_apps([AppDir]), Apps = rebar_app_discover:find_apps([AppDir]),
AppsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- Apps], AppsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- Apps],
Deps = rebar_app_discover:find_apps([BuildDir], all), Deps = rebar_app_discover:find_apps([BuildDir], all),
DepsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- Deps], DepsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- Deps],
Checkouts = rebar_app_discover:find_apps([CheckoutsDir], all),
CheckoutsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- Checkouts],
lists:foreach( lists:foreach(
fun({app, Name}) -> fun({app, Name}) ->
ct:pal("Name: ~p", [Name]), ct:pal("Name: ~p", [Name]),
@ -110,6 +115,9 @@ check_results(AppDir, Expected) ->
{Name, _App} -> {Name, _App} ->
ok ok
end end
; ({checkout, Name}) ->
ct:pal("Name: ~p", [Name]),
?assertNotEqual(false, lists:keyfind(Name, 1, CheckoutsNames))
; ({dep, Name}) -> ; ({dep, Name}) ->
ct:pal("Name: ~p", [Name]), ct:pal("Name: ~p", [Name]),
?assertNotEqual(false, lists:keyfind(Name, 1, DepsNames)) ?assertNotEqual(false, lists:keyfind(Name, 1, DepsNames))

Loading…
Cancel
Save