diff options
author | Siri Hansen <[email protected]> | 2019-04-01 16:36:20 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2019-04-15 11:02:37 +0200 |
commit | 62ed4780f713d86a9bca332945bf583111570978 (patch) | |
tree | 0303c7341885e8284072e567f336aef37c086a96 /lib/common_test/src/ct_framework.erl | |
parent | 8ab1bc2af5933b36c1583b1168e9b7875334cd50 (diff) | |
download | otp-62ed4780f713d86a9bca332945bf583111570978.tar.gz otp-62ed4780f713d86a9bca332945bf583111570978.tar.bz2 otp-62ed4780f713d86a9bca332945bf583111570978.zip |
[ct] Cleanup after timetrap timeout or kill during framework call or hook
If a framework callback function exits due to a timetrap timeout, or
the process in other way is killed, during the execution of such
function, some internal common_test data was not cleaned up. An
example of such data is the 'curr_tc' test data. This is now corrected.
Diffstat (limited to 'lib/common_test/src/ct_framework.erl')
-rw-r--r-- | lib/common_test/src/ct_framework.erl | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index 6066470233..de72344611 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -696,9 +696,16 @@ end_tc(Mod,IPTC={init_per_testcase,_Func},_TCPid,Result,Args,Return) -> end end; -end_tc(Mod,Func0,TCPid,Result,Args,Return) -> +end_tc(Mod,Func00,TCPid,Result,Args,Return) -> %% in case Mod == ct_framework, lookup the suite name Suite = get_suite_name(Mod, Args), + {OnlyCleanup,Func0} = + case Func00 of + {cleanup,F0} -> + {true,F0}; + _ -> + {false,Func00} + end, {Func,FuncSpec,HookFunc} = case Func0 of {end_per_testcase_not_run,F} -> @@ -742,6 +749,8 @@ end_tc(Mod,Func0,TCPid,Result,Args,Return) -> case HookFunc of undefined -> {ok,Result}; + _ when OnlyCleanup -> + {ok,Result}; _ -> case ct_hooks:end_tc(Suite,HookFunc,Args,Result,Return) of '$ct_no_change' -> @@ -752,6 +761,8 @@ end_tc(Mod,Func0,TCPid,Result,Args,Return) -> end, FinalResult = case get('$test_server_framework_test') of + _ when OnlyCleanup -> + Result1; undefined -> %% send sync notification so that event handlers may print %% in the log file before it gets closed |