diff options
Diffstat (limited to 'lib')
8 files changed, 159 insertions, 156 deletions
diff --git a/lib/common_test/src/ct_suite_callback.erl b/lib/common_test/src/ct_suite_callback.erl index dd4fc76c8b..06c7fc3833 100644 --- a/lib/common_test/src/ct_suite_callback.erl +++ b/lib/common_test/src/ct_suite_callback.erl @@ -66,15 +66,15 @@ terminate(Callbacks) -> init_tc(ct_framework, _Func, Args) -> Args; init_tc(Mod, init_per_suite, Config) -> - call(fun call_generic/3, Config, {pre_init_per_suite, Mod}); + call(fun call_generic/3, Config, [pre_init_per_suite, Mod]); init_tc(Mod, end_per_suite, Config) -> - call(fun call_generic/3, Config, {pre_end_per_suite, Mod}); + call(fun call_generic/3, Config, [pre_end_per_suite, Mod]); init_tc(_Mod, {init_per_group, GroupName, _}, Config) -> - call(fun call_generic/3, Config, {pre_init_per_group, GroupName}); + call(fun call_generic/3, Config, [pre_init_per_group, GroupName]); init_tc(_Mod, {end_per_group, GroupName, _}, Config) -> - call(fun call_generic/3, Config, {pre_end_per_group, GroupName}); + call(fun call_generic/3, Config, [pre_end_per_group, GroupName]); init_tc(_Mod, TC, Config) -> - call(fun call_generic/3, Config, {pre_init_per_testcase, TC}). + call(fun call_generic/3, Config, [pre_init_per_testcase, TC]). %% @doc Called as each test case is completed. This includes all configuration %% tests. @@ -91,31 +91,31 @@ init_tc(_Mod, TC, Config) -> end_tc(ct_framework, _Func, _Args, Result, _Return) -> Result; -end_tc(Mod, init_per_suite, _Config, _Result, Return) when is_list(Return) -> - call(fun call_generic/3, Return, {post_init_per_suite, Mod}); -end_tc(Mod, init_per_suite, _Config, Result, _Return) -> - call(fun call_generic/3, Result, {post_init_per_suite, Mod}); +end_tc(Mod, init_per_suite, Config, _Result, Return) when is_list(Return) -> + call(fun call_generic/3, Return, [post_init_per_suite, Mod, Config]); +end_tc(Mod, init_per_suite, Config, Result, _Return) -> + call(fun call_generic/3, Result, [post_init_per_suite, Mod, Config]); -end_tc(Mod, end_per_suite, _Config, Result, _Return) -> - call(fun call_generic/3, Result, {post_end_per_suite, Mod}); +end_tc(Mod, end_per_suite, Config, Result, _Return) -> + call(fun call_generic/3, Result, [post_end_per_suite, Mod, Config]); -end_tc(_Mod, {init_per_group, GroupName, _}, _Config, _Result, Return) +end_tc(_Mod, {init_per_group, GroupName, _}, Config, _Result, Return) when is_list(Return) -> - call(fun call_generic/3, Return, {post_init_per_group, GroupName}); -end_tc(_Mod, {init_per_group, GroupName, _}, _Config, Result, _Return) -> - call(fun call_generic/3, Result, {post_init_per_group, GroupName}); + call(fun call_generic/3, Return, [post_init_per_group, GroupName, Config]); +end_tc(_Mod, {init_per_group, GroupName, _}, Config, Result, _Return) -> + call(fun call_generic/3, Result, [post_init_per_group, GroupName, Config]); -end_tc(_Mod, {end_per_group, GroupName, _}, _Config, Result, _Return) -> - call(fun call_generic/3, Result, {post_end_per_group, GroupName}); +end_tc(_Mod, {end_per_group, GroupName, _}, Config, Result, _Return) -> + call(fun call_generic/3, Result, [post_end_per_group, GroupName, Config]); -end_tc(_Mod, TC, _Config, Result, _Return) -> - call(fun call_generic/3, Result, {post_end_per_testcase, TC}). +end_tc(_Mod, TC, Config, Result, _Return) -> + call(fun call_generic/3, Result, [post_end_per_testcase, TC, Config]). on_tc_skip(How, {_Suite, Case, Reason}) -> - call(fun call_cleanup/3, {How, Reason}, {on_tc_skip, Case}). + call(fun call_cleanup/3, {How, Reason}, [on_tc_skip, Case]). -on_tc_fail(How, {_Suite, Case, Reason}) -> - call(fun call_cleanup/3, Reason, {on_tc_fail, Case}). +on_tc_fail(_How, {_Suite, Case, Reason}) -> + call(fun call_cleanup/3, Reason, [on_tc_fail, Case]). %% ------------------------------------------------------------------------- %% Internal Functions @@ -130,19 +130,15 @@ call_terminate({Mod, State}, _, _) -> catch_apply(Mod,terminate,[State], ok), {[],{Mod,State}}. -call_cleanup({Mod, State}, Reason, {Function, Tag}) -> - NewState = catch_apply(Mod,Function,[Tag, Reason, State], +call_cleanup({Mod, State}, Reason, [Function | Args]) -> + NewState = catch_apply(Mod,Function, Args ++ [Reason, State], {Reason,State}), {Reason, {Mod, NewState}}. -call_generic({Mod, State}, Config, {Function, undefined}) -> - {NewConf, NewState} = catch_apply(Mod,Function,[Config, State], - {Config, State}), - {NewConf, {Mod, NewState}}; -call_generic({Mod, State}, Config, {Function, Tag}) -> - {NewConf, NewState} = catch_apply(Mod,Function,[Tag, Config, State], - {Config,State}), - {NewConf, {Mod, NewState}}. +call_generic({Mod, State}, Value, [Function | Args]) -> + {NewValue, NewState} = catch_apply(Mod, Function, Args ++ [Value, State], + {Value,State}), + {NewValue, {Mod, NewState}}. %% Generic call function call(Fun, Config, Meta) -> @@ -191,19 +187,21 @@ remove(_, Else) -> Else. %% Translate scopes, i.e. init_per_group,group1 -> end_per_group,group1 etc -scope({pre_init_per_testcase, TC}) -> - {post_end_per_testcase, TC}; -scope({pre_init_per_group, GroupName}) -> - {post_end_per_group, GroupName}; -scope({post_init_per_group, GroupName}) -> - {post_end_per_group, GroupName}; -scope({pre_init_per_suite, SuiteName}) -> - {post_end_per_suite, SuiteName}; -scope({post_init_per_suite, SuiteName}) -> - {post_end_per_suite, SuiteName}; +scope([pre_init_per_testcase, TC|_]) -> + [post_end_per_testcase, TC]; +scope([pre_init_per_group, GroupName|_]) -> + [post_end_per_group, GroupName]; +scope([post_init_per_group, GroupName|_]) -> + [post_end_per_group, GroupName]; +scope([pre_init_per_suite, SuiteName|_]) -> + [post_end_per_suite, SuiteName]; +scope([post_init_per_suite, SuiteName|_]) -> + [post_end_per_suite, SuiteName]; scope(init) -> none. +terminate_if_scope_ends(CBId, [Function,Tag|T], CBs) when T =/= [] -> + terminate_if_scope_ends(CBId,[Function,Tag],CBs); terminate_if_scope_ends(CBId, Function, CBs) -> case lists:keyfind(CBId, 1, CBs) of {CBId, Function, _ModState} = CB -> diff --git a/lib/common_test/test/ct_suite_callback_SUITE.erl b/lib/common_test/test/ct_suite_callback_SUITE.erl index b6af8e0c2a..3a7727120d 100644 --- a/lib/common_test/test/ct_suite_callback_SUITE.erl +++ b/lib/common_test/test/ct_suite_callback_SUITE.erl @@ -191,18 +191,18 @@ test_events(one_empty_scb) -> {?eh,scb,{empty_scb,pre_init_per_suite, [ct_scb_empty_SUITE,'$proplist',[]]}}, {?eh,scb,{empty_scb,post_init_per_suite, - [ct_scb_empty_SUITE,'$proplist',[]]}}, + [ct_scb_empty_SUITE,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,init_per_suite,ok}}, {?eh,tc_start,{ct_scb_empty_SUITE,test_case}}, {?eh,scb,{empty_scb,pre_init_per_testcase,[test_case,'$proplist',[]]}}, - {?eh,scb,{empty_scb,post_end_per_testcase,[test_case,'_',[]]}}, + {?eh,scb,{empty_scb,post_end_per_testcase,[test_case,'$proplist','_',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,test_case,ok}}, {?eh,tc_start,{ct_scb_empty_SUITE,end_per_suite}}, {?eh,scb,{empty_scb,pre_end_per_suite, [ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{empty_scb,post_end_per_suite,[ct_scb_empty_SUITE,'_',[]]}}, + {?eh,scb,{empty_scb,post_end_per_suite,[ct_scb_empty_SUITE,'$proplist','_',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,end_per_suite,ok}}, {?eh,test_done,{'DEF','STOP_TIME'}}, {?eh,scb,{empty_scb,terminate,[[]]}}, @@ -218,22 +218,22 @@ test_events(two_empty_scb) -> {?eh,tc_start,{ct_scb_empty_SUITE,init_per_suite}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist','$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,init_per_suite,ok}}, {?eh,tc_start,{ct_scb_empty_SUITE,test_case}}, {?eh,scb,{'_',pre_init_per_testcase,[test_case,'$proplist',[]]}}, {?eh,scb,{'_',pre_init_per_testcase,[test_case,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_testcase,[test_case,ok,[]]}}, - {?eh,scb,{'_',post_end_per_testcase,[test_case,ok,[]]}}, + {?eh,scb,{'_',post_end_per_testcase,[test_case,'$proplist',ok,[]]}}, + {?eh,scb,{'_',post_end_per_testcase,[test_case,'$proplist',ok,[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,test_case,ok}}, {?eh,tc_start,{ct_scb_empty_SUITE,end_per_suite}}, {?eh,scb,{'_',pre_end_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, {?eh,scb,{'_',pre_end_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_suite,[ct_scb_empty_SUITE,'_',[]]}}, - {?eh,scb,{'_',post_end_per_suite,[ct_scb_empty_SUITE,'_',[]]}}, + {?eh,scb,{'_',post_end_per_suite,[ct_scb_empty_SUITE,'$proplist','_',[]]}}, + {?eh,scb,{'_',post_end_per_suite,[ct_scb_empty_SUITE,'$proplist','_',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,end_per_suite,ok}}, {?eh,test_done,{'DEF','STOP_TIME'}}, {?eh,scb,{'_',terminate,[[]]}}, @@ -282,17 +282,17 @@ test_events(minimal_and_maximal_scb) -> {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,tc_start,{ct_scb_empty_SUITE,init_per_suite}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,init_per_suite,ok}}, {?eh,tc_start,{ct_scb_empty_SUITE,test_case}}, {?eh,scb,{'_',pre_init_per_testcase,[test_case,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_testcase,[test_case,ok,[]]}}, + {?eh,scb,{'_',post_end_per_testcase,[test_case,'$proplist',ok,[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,test_case,ok}}, {?eh,tc_start,{ct_scb_empty_SUITE,end_per_suite}}, {?eh,scb,{'_',pre_end_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_suite,[ct_scb_empty_SUITE,'_',[]]}}, + {?eh,scb,{'_',post_end_per_suite,[ct_scb_empty_SUITE,'$proplist','_',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,end_per_suite,ok}}, {?eh,test_done,{'DEF','STOP_TIME'}}, {?eh,scb,{'_',terminate,[[]]}}, @@ -330,18 +330,18 @@ test_events(scope_per_suite_scb) -> {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,tc_start,{ct_scope_per_suite_scb_SUITE,init_per_suite}}, {?eh,scb,{'_',init,[[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scope_per_suite_scb_SUITE,'$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scope_per_suite_scb_SUITE,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scope_per_suite_scb_SUITE,init_per_suite,ok}}, {?eh,tc_start,{ct_scope_per_suite_scb_SUITE,test_case}}, {?eh,scb,{'_',pre_init_per_testcase,[test_case,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_testcase,[test_case,ok,[]]}}, + {?eh,scb,{'_',post_end_per_testcase,[test_case,'$proplist',ok,[]]}}, {?eh,tc_done,{ct_scope_per_suite_scb_SUITE,test_case,ok}}, {?eh,tc_start,{ct_scope_per_suite_scb_SUITE,end_per_suite}}, {?eh,scb,{'_',pre_end_per_suite, [ct_scope_per_suite_scb_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_suite,[ct_scope_per_suite_scb_SUITE,'_',[]]}}, + {?eh,scb,{'_',post_end_per_suite,[ct_scope_per_suite_scb_SUITE,'$proplist','_',[]]}}, {?eh,scb,{'_',terminate,[[]]}}, {?eh,tc_done,{ct_scope_per_suite_scb_SUITE,end_per_suite,ok}}, {?eh,test_done,{'DEF','STOP_TIME'}}, @@ -355,17 +355,17 @@ test_events(scope_suite_scb) -> {?eh,tc_start,{ct_scope_suite_scb_SUITE,init_per_suite}}, {?eh,scb,{'_',init,[[]]}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scope_suite_scb_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scope_suite_scb_SUITE,'$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scope_suite_scb_SUITE,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scope_suite_scb_SUITE,init_per_suite,ok}}, {?eh,tc_start,{ct_scope_suite_scb_SUITE,test_case}}, {?eh,scb,{'_',pre_init_per_testcase,[test_case,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_testcase,[test_case,ok,[]]}}, + {?eh,scb,{'_',post_end_per_testcase,[test_case,'$proplist',ok,[]]}}, {?eh,tc_done,{ct_scope_suite_scb_SUITE,test_case,ok}}, {?eh,tc_start,{ct_scope_suite_scb_SUITE,end_per_suite}}, {?eh,scb,{'_',pre_end_per_suite,[ct_scope_suite_scb_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_suite,[ct_scope_suite_scb_SUITE,'_',[]]}}, + {?eh,scb,{'_',post_end_per_suite,[ct_scope_suite_scb_SUITE,'$proplist','_',[]]}}, {?eh,scb,{'_',terminate,[[]]}}, {?eh,tc_done,{ct_scope_suite_scb_SUITE,end_per_suite,ok}}, {?eh,test_done,{'DEF','STOP_TIME'}}, @@ -381,17 +381,17 @@ test_events(scope_per_group_scb) -> [{?eh,tc_start,{ct_scope_per_group_scb_SUITE,{init_per_group,group1,[]}}}, {?eh,scb,{'_',init,[[]]}}, - {?eh,scb,{'_',post_init_per_group,[group1,'$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_group,[group1,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scope_per_group_scb_SUITE,{init_per_group,group1,[]},ok}}, {?eh,tc_start,{ct_scope_per_group_scb_SUITE,test_case}}, {?eh,scb,{'_',pre_init_per_testcase,[test_case,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_testcase,[test_case,ok,[]]}}, + {?eh,scb,{'_',post_end_per_testcase,[test_case,'$proplist',ok,[]]}}, {?eh,tc_done,{ct_scope_per_group_scb_SUITE,test_case,ok}}, {?eh,tc_start,{ct_scope_per_group_scb_SUITE,{end_per_group,group1,[]}}}, {?eh,scb,{'_',pre_end_per_group,[group1,'$proplist',[]]}}, - {?eh,scb,{'_',post_end_per_group,[group1,'_',[]]}}, + {?eh,scb,{'_',post_end_per_group,[group1,'$proplist','_',[]]}}, {?eh,scb,{'_',terminate,[[]]}}, {?eh,tc_done,{ct_scope_per_group_scb_SUITE,{end_per_group,group1,[]},ok}}], @@ -410,7 +410,7 @@ test_events(fail_pre_suite_scb) -> {?eh,tc_start,{ct_scb_empty_SUITE,init_per_suite}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE, + {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist', {error,"Test failure"},[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,init_per_suite, {failed, {error,"Test failure"}}}}, @@ -448,7 +448,7 @@ test_events(fail_post_suite_scb) -> {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,tc_start,{ct_scb_empty_SUITE,init_per_suite}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,init_per_suite, {failed,{error,"Test failure"}}}}, {?eh,scb,{'_',on_tc_fail,[init_per_suite, {failed,"Test failure"}, []]}}, @@ -475,7 +475,7 @@ test_events(skip_pre_suite_scb) -> {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,tc_start,{ct_scb_empty_SUITE,init_per_suite}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,{skip,"Test skip"},[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist',{skip,"Test skip"},[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,init_per_suite,{skipped,"Test skip"}}}, {?eh,scb,{'_',on_tc_skip, [init_per_suite,{tc_user_skip,{skipped,"Test skip"}},[]]}}, @@ -499,7 +499,7 @@ test_events(skip_post_suite_scb) -> {?eh,tc_start,{ct_scb_empty_SUITE,init_per_suite}}, {?eh,scb,{'_',pre_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, - {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist',[]]}}, + {?eh,scb,{'_',post_init_per_suite,[ct_scb_empty_SUITE,'$proplist','$proplist',[]]}}, {?eh,tc_done,{ct_scb_empty_SUITE,init_per_suite,{skipped,"Test skip"}}}, {?eh,scb,{'_',on_tc_skip, [init_per_suite,{tc_user_skip,{skipped,"Test skip"}},[]]}}, diff --git a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/empty_scb.erl b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/empty_scb.erl index 05f6563c45..d9aa1e77e4 100644 --- a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/empty_scb.erl +++ b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/empty_scb.erl @@ -38,17 +38,17 @@ -export([init/1]).
-export([pre_init_per_suite/3]).
--export([post_init_per_suite/3]).
+-export([post_init_per_suite/4]).
-export([pre_end_per_suite/3]).
--export([post_end_per_suite/3]).
+-export([post_end_per_suite/4]).
-export([pre_init_per_group/3]).
--export([post_init_per_group/3]).
+-export([post_init_per_group/4]).
-export([pre_end_per_group/3]).
--export([post_end_per_group/3]).
+-export([post_end_per_group/4]).
-export([pre_init_per_testcase/3]).
--export([post_end_per_testcase/3]).
+-export([post_end_per_testcase/4]).
-export([on_tc_fail/3]).
-export([on_tc_skip/3]).
@@ -95,22 +95,23 @@ pre_init_per_suite(Suite,Config,State) -> {Config, State}.
%% @doc Called after init_per_suite.
-%% you can change the config in this function.
+%% you can change the return value in this function.
-spec post_init_per_suite(Suite :: atom(),
- Config :: config(),
- State :: #state{}) ->
+ Config :: config(),
+ Return :: config() | skip_or_fail(),
+ State :: #state{}) ->
{config() | skip_or_fail(), NewState :: #state{}}.
-post_init_per_suite(Suite,Config,State) ->
+post_init_per_suite(Suite,Config,Return,State) ->
gen_event:notify(
?CT_EVMGR_REF, #event{ name = scb, node = node(),
data = {?MODULE, post_init_per_suite,
- [Suite,Config,State]}}),
- {Config, State}.
+ [Suite,Config,Return,State]}}),
+ {Return, State}.
-%% @doc Called before end_per_suite. Note that the config cannot be
-%% changed here, only the status of the suite.
+%% @doc Called before end_per_suite. The config/state can be changed here,
+%% though it will only affect the *end_per_suite function.
-spec pre_end_per_suite(Suite :: atom(),
- Config :: config(),
+ Config :: config() | skip_or_fail(),
State :: #state{}) ->
{ok | skip_or_fail(), NewState :: #state{}}.
pre_end_per_suite(Suite,Config,State) ->
@@ -123,15 +124,16 @@ pre_end_per_suite(Suite,Config,State) -> %% @doc Called after end_per_suite. Note that the config cannot be
%% changed here, only the status of the suite.
-spec post_end_per_suite(Suite :: atom(),
- Config :: config(),
- State :: #state{}) ->
+ Config :: config(),
+ Return :: term(),
+ State :: #state{}) ->
{ok | skip_or_fail(), NewState :: #state{}}.
-post_end_per_suite(Suite,Config,State) ->
+post_end_per_suite(Suite,Config,Return,State) ->
gen_event:notify(
?CT_EVMGR_REF, #event{ name = scb, node = node(),
data = {?MODULE, post_end_per_suite,
- [Suite,Config,State]}}),
- {Config, State}.
+ [Suite,Config,Return,State]}}),
+ {Return, State}.
%% @doc Called before each init_per_group.
%% You can change the config in this function.
@@ -147,23 +149,24 @@ pre_init_per_group(Group,Config,State) -> {Config, State}.
%% @doc Called after each init_per_group.
-%% You can change the config in this function.
+%% You can change the return value in this function.
-spec post_init_per_group(Group :: atom(),
- Config :: config(),
- State :: #state{}) ->
+ Config :: config(),
+ Return :: config() | skip_or_fail(),
+ State :: #state{}) ->
{config() | skip_or_fail(), NewState :: #state{}}.
-post_init_per_group(Group,Config,State) ->
+post_init_per_group(Group,Config,Return,State) ->
gen_event:notify(
?CT_EVMGR_REF, #event{ name = scb, node = node(),
data = {?MODULE, post_init_per_group,
- [Group,Config,State]}}),
- {Config, State}.
+ [Group,Config,Return,State]}}),
+ {Return, State}.
-%% @doc Called after each end_per_group. Note that the config cannot be
-%% changed here, only the status of the group.
+%% @doc Called after each end_per_group. The config/state can be changed here,
+%% though it will only affect the *end_per_group functions.
-spec pre_end_per_group(Group :: atom(),
- Config :: config(),
- State :: #state{}) ->
+ Config :: config() | skip_or_fail(),
+ State :: #state{}) ->
{ok | skip_or_fail(), NewState :: #state{}}.
pre_end_per_group(Group,Config,State) ->
gen_event:notify(
@@ -175,15 +178,16 @@ pre_end_per_group(Group,Config,State) -> %% @doc Called after each end_per_group. Note that the config cannot be
%% changed here, only the status of the group.
-spec post_end_per_group(Group :: atom(),
- Config :: config(),
- State :: #state{}) ->
+ Config :: config(),
+ Return :: term(),
+ State :: #state{}) ->
{ok | skip_or_fail(), NewState :: #state{}}.
-post_end_per_group(Group,Config,State) ->
+post_end_per_group(Group,Config,Return,State) ->
gen_event:notify(
?CT_EVMGR_REF, #event{ name = scb, node = node(),
data = {?MODULE, post_end_per_group,
- [Group,Config,State]}}),
- {Config, State}.
+ [Group,Config,Return,State]}}),
+ {Return, State}.
%% @doc Called before each test case.
%% You can change the config in this function.
@@ -201,15 +205,16 @@ pre_init_per_testcase(TC,Config,State) -> %% @doc Called after each test case. Note that the config cannot be
%% changed here, only the status of the test case.
-spec post_end_per_testcase(TC :: atom(),
- Config :: config(),
- State :: #state{}) ->
+ Config :: config(),
+ Return :: term(),
+ State :: #state{}) ->
{ok | skip_or_fail(), NewState :: #state{}}.
-post_end_per_testcase(TC,Config,State) ->
+post_end_per_testcase(TC,Config,Return,State) ->
gen_event:notify(
?CT_EVMGR_REF, #event{ name = scb, node = node(),
data = {?MODULE, post_end_per_testcase,
- [TC,Config,State]}}),
- {Config, State}.
+ [TC,Config,Return,State]}}),
+ {Return, State}.
%% @doc Called after post_init_per_suite, post_end_per_suite, post_init_per_group,
%% post_end_per_group and post_end_per_tc if the suite, group or test case failed.
diff --git a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_post_suite_scb.erl b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_post_suite_scb.erl index 2ba5013652..b3a3a5f94c 100644 --- a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_post_suite_scb.erl +++ b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_post_suite_scb.erl @@ -34,33 +34,33 @@ init(Opts) -> pre_init_per_suite(Suite, Config, State) ->
empty_scb:pre_init_per_suite(Suite,Config,State).
-post_init_per_suite(Suite,Config,State) ->
- empty_scb:post_init_per_suite(Suite,Config,State),
+post_init_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_init_per_suite(Suite,Config,Return,State),
{{fail, "Test failure"}, State}.
pre_end_per_suite(Suite,Config,State) ->
empty_scb:pre_end_per_suite(Suite,Config,State).
-post_end_per_suite(Suite,Config,State) ->
- empty_scb:post_end_per_suite(Suite,Config,State).
+post_end_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_end_per_suite(Suite,Config,Return,State).
pre_init_per_group(Group,Config,State) ->
empty_scb:pre_init_per_group(Group,Config,State).
-post_init_per_group(Group,Config,State) ->
- empty_scb:post_init_per_group(Group,Config,State).
+post_init_per_group(Group,Config,Return,State) ->
+ empty_scb:post_init_per_group(Group,Config,Return,State).
pre_end_per_group(Group,Config,State) ->
empty_scb:pre_end_per_group(Group,Config,State).
-post_end_per_group(Group,Config,State) ->
- empty_scb:post_end_per_group(Group,Config,State).
+post_end_per_group(Group,Config,Return,State) ->
+ empty_scb:post_end_per_group(Group,Config,Return,State).
pre_init_per_testcase(TC,Config,State) ->
empty_scb:pre_init_per_testcase(TC,Config,State).
-post_end_per_testcase(TC,Config,State) ->
- empty_scb:post_end_per_testcase(TC,Config,State).
+post_end_per_testcase(TC,Config,Return,State) ->
+ empty_scb:post_end_per_testcase(TC,Config,Return,State).
on_tc_fail(TC, Reason, State) ->
empty_scb:on_tc_fail(TC,Reason,State).
diff --git a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_pre_suite_scb.erl b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_pre_suite_scb.erl index f108624836..d49387ff8c 100644 --- a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_pre_suite_scb.erl +++ b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/fail_pre_suite_scb.erl @@ -35,32 +35,32 @@ pre_init_per_suite(Suite, Config, State) -> empty_scb:pre_init_per_suite(Suite,Config,State),
{{fail, "Test failure"}, State}.
-post_init_per_suite(Suite,Config,State) ->
- empty_scb:post_init_per_suite(Suite,Config,State).
+post_init_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_init_per_suite(Suite,Config,Return,State).
pre_end_per_suite(Suite,Config,State) ->
empty_scb:pre_end_per_suite(Suite,Config,State).
-post_end_per_suite(Suite,Config,State) ->
- empty_scb:post_end_per_suite(Suite,Config,State).
+post_end_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_end_per_suite(Suite,Config,Return,State).
pre_init_per_group(Group,Config,State) ->
empty_scb:pre_init_per_group(Group,Config,State).
-post_init_per_group(Group,Config,State) ->
- empty_scb:post_init_per_group(Group,Config,State).
+post_init_per_group(Group,Config,Return,State) ->
+ empty_scb:post_init_per_group(Group,Config,Return,State).
pre_end_per_group(Group,Config,State) ->
empty_scb:pre_end_per_group(Group,Config,State).
-post_end_per_group(Group,Config,State) ->
- empty_scb:post_end_per_group(Group,Config,State).
+post_end_per_group(Group,Config,Return,State) ->
+ empty_scb:post_end_per_group(Group,Config,Return,State).
pre_init_per_testcase(TC,Config,State) ->
empty_scb:pre_init_per_testcase(TC,Config,State).
-post_end_per_testcase(TC,Config,State) ->
- empty_scb:post_end_per_testcase(TC,Config,State).
+post_end_per_testcase(TC,Config,Return,State) ->
+ empty_scb:post_end_per_testcase(TC,Config,Return,State).
on_tc_fail(TC, Reason, State) ->
empty_scb:on_tc_fail(TC,Reason,State).
diff --git a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_post_suite_scb.erl b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_post_suite_scb.erl index 5462e34175..a2e0578814 100644 --- a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_post_suite_scb.erl +++ b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_post_suite_scb.erl @@ -34,33 +34,33 @@ init(Opts) -> pre_init_per_suite(Suite, Config, State) ->
empty_scb:pre_init_per_suite(Suite,Config,State).
-post_init_per_suite(Suite,Config,State) ->
- empty_scb:post_init_per_suite(Suite,Config,State),
+post_init_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_init_per_suite(Suite,Config,Return,State),
{{skip, "Test skip"}, State}.
pre_end_per_suite(Suite,Config,State) ->
empty_scb:pre_end_per_suite(Suite,Config,State).
-post_end_per_suite(Suite,Config,State) ->
- empty_scb:post_end_per_suite(Suite,Config,State).
+post_end_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_end_per_suite(Suite,Config,Return,State).
pre_init_per_group(Group,Config,State) ->
empty_scb:pre_init_per_group(Group,Config,State).
-post_init_per_group(Group,Config,State) ->
- empty_scb:post_init_per_group(Group,Config,State).
+post_init_per_group(Group,Config,Return,State) ->
+ empty_scb:post_init_per_group(Group,Config,Return,State).
pre_end_per_group(Group,Config,State) ->
empty_scb:pre_end_per_group(Group,Config,State).
-post_end_per_group(Group,Config,State) ->
- empty_scb:post_end_per_group(Group,Config,State).
+post_end_per_group(Group,Config,Return,State) ->
+ empty_scb:post_end_per_group(Group,Config,Return,State).
pre_init_per_testcase(TC,Config,State) ->
empty_scb:pre_init_per_testcase(TC,Config,State).
-post_end_per_testcase(TC,Config,State) ->
- empty_scb:post_end_per_testcase(TC,Config,State).
+post_end_per_testcase(TC,Config,Return,State) ->
+ empty_scb:post_end_per_testcase(TC,Config,Return,State).
on_tc_fail(TC, Reason, State) ->
empty_scb:on_tc_fail(TC,Reason,State).
diff --git a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_pre_suite_scb.erl b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_pre_suite_scb.erl index 006ae4a90f..4a0725ce2f 100644 --- a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_pre_suite_scb.erl +++ b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/skip_pre_suite_scb.erl @@ -36,32 +36,32 @@ pre_init_per_suite(Suite, Config, State) -> empty_scb:pre_init_per_suite(Suite,Config,State),
{{skip, "Test skip"}, State}.
-post_init_per_suite(Suite,Config,State) ->
- empty_scb:post_init_per_suite(Suite,Config,State).
+post_init_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_init_per_suite(Suite,Config,Return,State).
pre_end_per_suite(Suite,Config,State) ->
empty_scb:pre_end_per_suite(Suite,Config,State).
-post_end_per_suite(Suite,Config,State) ->
- empty_scb:post_end_per_suite(Suite,Config,State).
+post_end_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_end_per_suite(Suite,Config,Return,State).
pre_init_per_group(Group,Config,State) ->
empty_scb:pre_init_per_group(Group,Config,State).
-post_init_per_group(Group,Config,State) ->
- empty_scb:post_init_per_group(Group,Config,State).
+post_init_per_group(Group,Config,Return,State) ->
+ empty_scb:post_init_per_group(Group,Config,Return,State).
pre_end_per_group(Group,Config,State) ->
empty_scb:pre_end_per_group(Group,Config,State).
-post_end_per_group(Group,Config,State) ->
- empty_scb:post_end_per_group(Group,Config,State).
+post_end_per_group(Group,Config,Return,State) ->
+ empty_scb:post_end_per_group(Group,Config,Return,State).
pre_init_per_testcase(TC,Config,State) ->
empty_scb:pre_init_per_testcase(TC,Config,State).
-post_end_per_testcase(TC,Config,State) ->
- empty_scb:post_end_per_testcase(TC,Config,State).
+post_end_per_testcase(TC,Config,Return,State) ->
+ empty_scb:post_end_per_testcase(TC,Config,Return,State).
on_tc_fail(TC, Reason, State) ->
empty_scb:on_tc_fail(TC,Reason,State).
diff --git a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/undef_scb.erl b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/undef_scb.erl index 80d0f10415..9479f9d937 100644 --- a/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/undef_scb.erl +++ b/lib/common_test/test/ct_suite_callback_SUITE_data/scb/tests/undef_scb.erl @@ -34,32 +34,32 @@ init(Opts) -> pre_init_per_suite(_Suite, _Config, _State) ->
lists:flaten([1,2,[3,4]]).
-post_init_per_suite(Suite,Config,State) ->
- empty_scb:post_init_per_suite(Suite,Config,State).
+post_init_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_init_per_suite(Suite,Config,Return,State).
pre_end_per_suite(Suite,Config,State) ->
empty_scb:pre_end_per_suite(Suite,Config,State).
-post_end_per_suite(Suite,Config,State) ->
- empty_scb:post_end_per_suite(Suite,Config,State).
+post_end_per_suite(Suite,Config,Return,State) ->
+ empty_scb:post_end_per_suite(Suite,Config,Return,State).
pre_init_per_group(Group,Config,State) ->
empty_scb:pre_init_per_group(Group,Config,State).
-post_init_per_group(Group,Config,State) ->
- empty_scb:post_init_per_group(Group,Config,State).
+post_init_per_group(Group,Config,Return,State) ->
+ empty_scb:post_init_per_group(Group,Config,Return,State).
pre_end_per_group(Group,Config,State) ->
empty_scb:pre_end_per_group(Group,Config,State).
-post_end_per_group(Group,Config,State) ->
- empty_scb:post_end_per_group(Group,Config,State).
+post_end_per_group(Group,Config,Return,State) ->
+ empty_scb:post_end_per_group(Group,Config,Return,State).
pre_init_per_testcase(TC,Config,State) ->
empty_scb:pre_init_per_testcase(TC,Config,State).
-post_end_per_testcase(TC,Config,State) ->
- empty_scb:post_end_per_testcase(TC,Config,State).
+post_end_per_testcase(TC,Config,Return,State) ->
+ empty_scb:post_end_per_testcase(TC,Config,Return,State).
on_tc_fail(TC, Reason, State) ->
empty_scb:on_tc_fail(TC,Reason,State).
|