From 14037aa45f57fabf01ed94bc8296051987ad1b7f Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sat, 31 Jan 2015 09:55:16 -0600 Subject: add hook SUITE tests --- test/rebar_hooks_SUITE.erl | 37 +++++++++++++++++++++++++++++++++++++ test/rebar_test_utils.erl | 20 ++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 test/rebar_hooks_SUITE.erl diff --git a/test/rebar_hooks_SUITE.erl b/test/rebar_hooks_SUITE.erl new file mode 100644 index 0000000..6a00320 --- /dev/null +++ b/test/rebar_hooks_SUITE.erl @@ -0,0 +1,37 @@ +-module(rebar_hooks_SUITE). + +-export([suite/0, + init_per_suite/1, + end_per_suite/1, + init_per_testcase/2, + all/0, + build_and_clean_app/1]). + +-include_lib("common_test/include/ct.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("kernel/include/file.hrl"). + +suite() -> + []. + +init_per_suite(Config) -> + Config. + +end_per_suite(_Config) -> + ok. + +init_per_testcase(_, Config) -> + rebar_test_utils:init_rebar_state(Config). + +all() -> + [build_and_clean_app]. + +%% Test post provider hook cleans compiled project app, leaving it invalid +build_and_clean_app(Config) -> + AppDir = ?config(apps, Config), + + Name = rebar_test_utils:create_random_name("app1_"), + Vsn = rebar_test_utils:create_random_vsn(), + rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]), + rebar_test_utils:run_and_check(Config, [], ["compile"], {ok, [{app, Name, valid}]}), + rebar_test_utils:run_and_check(Config, [{provider_hooks, [{post, [{compile, clean}]}]}], ["compile"], {ok, [{app, Name, invalid}]}). diff --git a/test/rebar_test_utils.erl b/test/rebar_test_utils.erl index 0a74a5f..6095d6d 100644 --- a/test/rebar_test_utils.erl +++ b/test/rebar_test_utils.erl @@ -102,7 +102,11 @@ check_results(AppDir, Expected) -> BuildDir = filename:join([AppDir, "_build", "lib"]), CheckoutsDir = filename:join([AppDir, "_checkouts"]), Apps = rebar_app_discover:find_apps([AppDir]), + InvalidApps = rebar_app_discover:find_apps([AppDir], invalid), + ValidApps = rebar_app_discover:find_apps([AppDir], valid), AppsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- Apps], + InvalidAppsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- InvalidApps], + ValidAppsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- ValidApps], Deps = rebar_app_discover:find_apps([BuildDir], all), DepsNames = [{ec_cnv:to_list(rebar_app_info:name(App)), App} || App <- Deps], Checkouts = rebar_app_discover:find_apps([CheckoutsDir], all), @@ -116,6 +120,22 @@ check_results(AppDir, Expected) -> {Name, _App} -> ok end + ; ({app, Name, invalid}) -> + ct:pal("Name: ~p", [Name]), + case lists:keyfind(Name, 1, InvalidAppsNames) of + false -> + error({app_not_found, Name}); + {Name, _App} -> + ok + end + ; ({app, Name, valid}) -> + ct:pal("Name: ~p", [Name]), + case lists:keyfind(Name, 1, ValidAppsNames) of + false -> + error({app_not_found, Name}); + {Name, _App} -> + ok + end ; ({checkout, Name}) -> ct:pal("Name: ~p", [Name]), ?assertNotEqual(false, lists:keyfind(Name, 1, CheckoutsNames)) -- cgit v1.1