diff options
Diffstat (limited to 'lib/common_test/test')
4 files changed, 120 insertions, 10 deletions
diff --git a/lib/common_test/test/ct_error_SUITE.erl b/lib/common_test/test/ct_error_SUITE.erl index fae23484e6..621f3b6d2d 100644 --- a/lib/common_test/test/ct_error_SUITE.erl +++ b/lib/common_test/test/ct_error_SUITE.erl @@ -1531,17 +1531,17 @@ test_events(config_func_errors) -> {?eh,tc_start,{config_func_error_1_SUITE,exit_in_iptc}}, {?eh,tc_done,{config_func_error_1_SUITE,exit_in_iptc,'_'}}, - {?eh,test_stats,{0,1,{0,0}}}, + {?eh,test_stats,{0,0,{0,1}}}, {?eh,tc_start,{config_func_error_1_SUITE,exit_in_eptc}}, {?eh,tc_done,{config_func_error_1_SUITE,exit_in_eptc,'_'}}, - {?eh,test_stats,{0,2,{0,0}}}, + {?eh,test_stats,{1,0,{0,1}}}, [{?eh,tc_start,{config_func_error_1_SUITE,{init_per_group,g1,[]}}}, {?eh,tc_done,{config_func_error_1_SUITE,{init_per_group,g1,[]},ok}}, {?eh,tc_start,{config_func_error_1_SUITE,exit_in_iptc}}, {?eh,tc_done,{config_func_error_1_SUITE,exit_in_iptc,'_'}}, - {?eh,test_stats,{0,3,{0,0}}}, + {?eh,test_stats,{1,0,{0,2}}}, {?eh,tc_start,{config_func_error_1_SUITE,{end_per_group,g1,[]}}}, {?eh,tc_done,{config_func_error_1_SUITE,{end_per_group,g1,[]},ok}}], @@ -1549,7 +1549,7 @@ test_events(config_func_errors) -> {?eh,tc_done,{config_func_error_1_SUITE,{init_per_group,g2,[]},ok}}, {?eh,tc_start,{config_func_error_1_SUITE,exit_in_eptc}}, {?eh,tc_done,{config_func_error_1_SUITE,exit_in_eptc,'_'}}, - {?eh,test_stats,{0,4,{0,0}}}, + {?eh,test_stats,{2,0,{0,2}}}, {?eh,tc_start,{config_func_error_1_SUITE,{end_per_group,g2,[]}}}, {?eh,tc_done,{config_func_error_1_SUITE,{end_per_group,g2,[]},ok}}], diff --git a/lib/common_test/test/ct_hooks_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE.erl index 4624324295..e5d8f15453 100644 --- a/lib/common_test/test/ct_hooks_SUITE.erl +++ b/lib/common_test/test/ct_hooks_SUITE.erl @@ -1644,7 +1644,7 @@ test_events(callbacks_on_skip) -> {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,cth,{empty_cth,id,[[]]}}, {?eh,cth,{empty_cth,init,[{'_','_','_'},[]]}}, - {?eh,start_info,{6,6,12}}, + {?eh,start_info,{6,6,15}}, %% all_hook_callbacks_SUITE is skipped in spec %% Only the on_tc_skip callback shall be called @@ -1923,6 +1923,86 @@ test_events(callbacks_on_skip) -> []]}}, {?eh,test_stats,{0,0,{5,5}}}, + %% Exit in init_per_testcase -> pre/post_end_per_testcase + %% shall not be called + {?eh,tc_start,{skip_case_SUITE,exit_in_init}}, + {?eh,cth,{empty_cth,pre_init_per_testcase, + [skip_case_SUITE,exit_in_init, + '$proplist', + []]}}, + {?eh,cth,{empty_cth,post_init_per_testcase, + [skip_case_SUITE,exit_in_init, + '$proplist', + {skip,{failed,'_'}}, + []]}}, + {?eh,tc_done,{skip_case_SUITE,exit_in_init, + {auto_skipped,{failed,'_'}}}}, + {?eh,cth,{empty_cth,on_tc_skip, + [skip_case_SUITE,exit_in_init, + {tc_auto_skip,{auto_skipped,{failed,'_'}}}, + []]}}, + {?eh,test_stats,{0,0,{5,6}}}, + + %% Fail in end_per_testcase -> all hooks shall be called and + %% test shall succeed. + {?eh,tc_start,{skip_case_SUITE,fail_in_end}}, + {?eh,cth,{empty_cth,pre_init_per_testcase, + [skip_case_SUITE,fail_in_end, + '$proplist', + []]}}, + {?eh,cth,{empty_cth,post_init_per_testcase, + [skip_case_SUITE,fail_in_end, + '$proplist', + ok, + []]}}, + {?eh,cth,{empty_cth,pre_end_per_testcase, + [skip_case_SUITE,fail_in_end, + '$proplist', + []]}}, + {?eh,cth,{empty_cth,post_end_per_testcase, + [skip_case_SUITE,fail_in_end, + '$proplist', + {failed, + {skip_case_SUITE,end_per_testcase, + {'EXIT', + {test_case_failed,"Failed in end_per_testcase/2"}}}}, + []]}}, + {?eh,tc_done,{skip_case_SUITE,fail_in_end, + {failed, + {skip_case_SUITE,end_per_testcase, + {'EXIT', + {test_case_failed,"Failed in end_per_testcase/2"}}}}}}, + {?eh,test_stats,{1,0,{5,6}}}, + + %% Exit in end_per_testcase -> all hooks shall be called and + %% test shall succeed. + {?eh,tc_start,{skip_case_SUITE,exit_in_end}}, + {?eh,cth,{empty_cth,pre_init_per_testcase, + [skip_case_SUITE,exit_in_end, + '$proplist', + []]}}, + {?eh,cth,{empty_cth,post_init_per_testcase, + [skip_case_SUITE,exit_in_end, + '$proplist', + ok, + []]}}, + {?eh,cth,{empty_cth,pre_end_per_testcase, + [skip_case_SUITE,exit_in_end, + '$proplist', + []]}}, + {?eh,cth,{empty_cth,post_end_per_testcase, + [skip_case_SUITE,exit_in_end, + '$proplist', + {failed, + {skip_case_SUITE,end_per_testcase, + {'EXIT',"Exit in end_per_testcase/2"}}}, + []]}}, + {?eh,tc_done,{skip_case_SUITE,exit_in_end, + {failed, + {skip_case_SUITE,end_per_testcase, + {'EXIT',"Exit in end_per_testcase/2"}}}}}, + {?eh,test_stats,{2,0,{5,6}}}, + %% Skip in testcase function -> all callbacks shall be called {?eh,tc_start,{skip_case_SUITE,skip_in_case}}, {?eh,cth,{empty_cth,pre_init_per_testcase, @@ -1948,7 +2028,7 @@ test_events(callbacks_on_skip) -> [skip_case_SUITE,skip_in_case, {tc_user_skip,{skipped,"Skipped in test case function"}}, []]}}, - {?eh,test_stats,{0,0,{6,5}}}, + {?eh,test_stats,{2,0,{6,6}}}, %% Auto skip due to failed 'require' -> only the on_tc_skip %% callback shall be called @@ -1960,7 +2040,7 @@ test_events(callbacks_on_skip) -> {tc_auto_skip, {auto_skipped,{require_failed,{not_available,whatever}}}}, []]}}, - {?eh,test_stats,{0,0,{6,6}}}, + {?eh,test_stats,{2,0,{6,7}}}, %% Auto skip due to failed testcase/0 function -> only the %% on_tc_skip callback shall be called @@ -1972,7 +2052,7 @@ test_events(callbacks_on_skip) -> {tc_auto_skip, {auto_skipped,{testcase0_failed,bad_return_value}}}, []]}}, - {?eh,test_stats,{0,0,{6,7}}}, + {?eh,test_stats,{2,0,{6,8}}}, {?eh,tc_start,{skip_case_SUITE,end_per_suite}}, {?eh,cth,{empty_cth,pre_end_per_suite, diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_case_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_case_SUITE.erl index 436d496c32..dad80ae914 100644 --- a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_case_SUITE.erl +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_case_SUITE.erl @@ -43,9 +43,15 @@ init_per_testcase(skip_in_init,Config) -> {skip,"Skipped in init_per_testcase/2"}; init_per_testcase(fail_in_init,Config) -> ct:fail("Failed in init_per_testcase/2"); +init_per_testcase(exit_in_init,Config) -> + exit(self(),"Exit in init_per_testcase/2"); init_per_testcase(_,Config) -> Config. +end_per_testcase(fail_in_end,_) -> + ct:fail("Failed in end_per_testcase/2"); +end_per_testcase(exit_in_end,_) -> + exit(self(),"Exit in end_per_testcase/2"); end_per_testcase(_,_) -> ok. @@ -53,6 +59,9 @@ all() -> [skip_in_spec, skip_in_init, fail_in_init, + exit_in_init, + fail_in_end, + exit_in_end, skip_in_case, req_auto_skip, fail_auto_skip @@ -71,6 +80,16 @@ fail_in_init(Config) -> ct:fail("This test shall never be run. " "It shall fail in init_per_testcase/2."). +exit_in_init(Config) -> + ct:fail("This test shall never be run. " + "It shall exit in init_per_testcase/2."). + +fail_in_end(Config) -> + ok. + +exit_in_end(Config) -> + ok. + skip_in_case(Config) -> {skip,"Skipped in test case function"}. diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_cth.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_cth.erl index 7d8f406763..16f015fe7a 100644 --- a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_cth.erl +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/skip_cth.erl @@ -101,6 +101,9 @@ post_end_per_group(Suite,Group,Config,Return,State) -> pre_init_per_testcase(Suite,TC,Config,State) -> (Suite==skip_case_SUITE andalso (TC==skip_in_init orelse TC==fail_in_init + orelse TC==exit_in_init + orelse TC==fail_in_end + orelse TC==exit_in_end orelse TC==skip_in_case)) orelse (Suite==seq_SUITE andalso TC==test_case_1) orelse (Suite==repeat_SUITE andalso TC==test_case_1) @@ -110,6 +113,9 @@ pre_init_per_testcase(Suite,TC,Config,State) -> post_init_per_testcase(Suite,TC,Config,Return,State) -> (Suite==skip_case_SUITE andalso (TC==skip_in_init orelse TC==fail_in_init + orelse TC==exit_in_init + orelse TC==fail_in_end + orelse TC==exit_in_end orelse TC==skip_in_case)) orelse (Suite==seq_SUITE andalso TC==test_case_1) orelse (Suite==repeat_SUITE andalso TC==test_case_1) @@ -117,14 +123,18 @@ post_init_per_testcase(Suite,TC,Config,Return,State) -> empty_cth:post_init_per_testcase(Suite,TC,Config,Return,State). pre_end_per_testcase(Suite,TC,Config,State) -> - (Suite==skip_case_SUITE andalso TC==skip_in_case) + (Suite==skip_case_SUITE andalso (TC==skip_in_case + orelse TC==fail_in_end + orelse TC==exit_in_end)) orelse (Suite==seq_SUITE andalso TC==test_case_1) orelse (Suite==repeat_SUITE andalso TC==test_case_1) orelse ?fail({Suite,TC}), empty_cth:pre_end_per_testcase(Suite,TC,Config,State). post_end_per_testcase(Suite,TC,Config,Return,State) -> - (Suite==skip_case_SUITE andalso TC==skip_in_case) + (Suite==skip_case_SUITE andalso (TC==skip_in_case + orelse TC==fail_in_end + orelse TC==exit_in_end)) orelse (Suite==seq_SUITE andalso TC==test_case_1) orelse (Suite==repeat_SUITE andalso TC==test_case_1) orelse ?fail({Suite,TC}), @@ -155,6 +165,7 @@ on_tc_skip(skip_case_SUITE=Suite,TC,Reason,State) when TC==skip_in_spec; TC==skip_in_init; TC==fail_in_init; + TC==exit_in_init; TC==skip_in_case; TC==req_auto_skip; TC==fail_auto_skip -> |