aboutsummaryrefslogtreecommitdiffstats
path: root/lib/common_test/src
diff options
context:
space:
mode:
Diffstat (limited to 'lib/common_test/src')
-rw-r--r--lib/common_test/src/ct_framework.erl22
-rw-r--r--lib/common_test/src/ct_suite_callback.erl30
2 files changed, 29 insertions, 23 deletions
diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl
index f7c07a5374..dbf367e4d8 100644
--- a/lib/common_test/src/ct_framework.erl
+++ b/lib/common_test/src/ct_framework.erl
@@ -484,21 +484,27 @@ end_tc(Mod,Func,TCPid,Result,Args,Return) ->
case get('$test_server_framework_test') of
undefined ->
- FinalResult = ct_suite_callback:end_tc(
- Mod, FuncSpec, Args, Result, Return),
+ {FinalResult,FinalNotify} =
+ case ct_suite_callback:end_tc(
+ Mod, FuncSpec, Args, Result, Return) of
+ '$ct_no_change' ->
+ {FinalResult = ok,Result};
+ FinalResult ->
+ {FinalResult,FinalResult}
+ end,
% send sync notification so that event handlers may print
% in the log file before it gets closed
ct_event:sync_notify(#event{name=tc_done,
node=node(),
data={Mod,FuncSpec,
- tag_scb(FinalResult)}});
+ tag_scb(FinalNotify)}});
Fun ->
% send sync notification so that event handlers may print
% in the log file before it gets closed
ct_event:sync_notify(#event{name=tc_done,
node=node(),
data={Mod,FuncSpec,tag(Result)}}),
- FinalResult = Fun(end_tc, ok)
+ FinalResult = Fun(end_tc, Return)
end,
@@ -521,13 +527,7 @@ end_tc(Mod,Func,TCPid,Result,Args,Return) ->
_ ->
ok
end,
- case FinalResult of
- Result ->
- ok;
- _Else ->
- FinalResult
- end.
-
+ FinalResult.
%% {error,Reason} | {skip,Reason} | {timetrap_timeout,TVal} |
%% {testcase_aborted,Reason} | testcase_aborted_or_killed |
diff --git a/lib/common_test/src/ct_suite_callback.erl b/lib/common_test/src/ct_suite_callback.erl
index 06c7fc3833..4973ed685c 100644
--- a/lib/common_test/src/ct_suite_callback.erl
+++ b/lib/common_test/src/ct_suite_callback.erl
@@ -91,25 +91,25 @@ 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, 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, init_per_suite, Config, Result, Return) ->
+ call(fun call_generic/3, Return, [post_init_per_suite, Mod, Config],
+ '$ct_no_change');
end_tc(Mod, end_per_suite, Config, Result, _Return) ->
- call(fun call_generic/3, Result, [post_end_per_suite, Mod, Config]);
+ call(fun call_generic/3, Result, [post_end_per_suite, Mod, Config],
+ '$ct_no_change');
-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, 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, {init_per_group, GroupName, _}, Config, Result, Return) ->
+ call(fun call_generic/3, Return, [post_init_per_group, GroupName, Config],
+ '$ct_no_change');
end_tc(_Mod, {end_per_group, GroupName, _}, Config, Result, _Return) ->
- call(fun call_generic/3, Result, [post_end_per_group, GroupName, Config]);
+ call(fun call_generic/3, Result, [post_end_per_group, GroupName, Config],
+ '$ct_no_change');
end_tc(_Mod, TC, Config, Result, _Return) ->
- call(fun call_generic/3, Result, [post_end_per_testcase, TC, Config]).
+ call(fun call_generic/3, Result, [post_end_per_testcase, TC, Config],
+ '$ct_no_change').
on_tc_skip(How, {_Suite, Case, Reason}) ->
call(fun call_cleanup/3, {How, Reason}, [on_tc_skip, Case]).
@@ -146,6 +146,12 @@ call(Fun, Config, Meta) ->
call([{CBId,Fun} || {CBId,_, _} <- CBs] ++ get_new_callbacks(Config, Fun),
remove(?config_name,Config), Meta, CBs).
+call(Fun, Config, Meta, NoChangeRet) when is_function(Fun) ->
+ case call(Fun,Config,Meta) of
+ Config -> NoChangeRet;
+ NewReturn -> NewReturn
+ end;
+
call([{CB, call_init, NextFun} | Rest], Config, Meta, CBs) ->
try
{Config, {NewId, _, {Mod,_State}} = NewCB} = call_init(CB, Config, Meta),