summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/rebar_hooks_SUITE.erl37
-rw-r--r--test/rebar_test_utils.erl20
2 files changed, 57 insertions, 0 deletions
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))