diff options
| author | Siri Hansen <[email protected]> | 2017-02-16 14:15:32 +0100 | 
|---|---|---|
| committer | Siri Hansen <[email protected]> | 2017-02-20 12:40:09 +0100 | 
| commit | 8151495812ffabf560958e5434d3edbe46f29695 (patch) | |
| tree | 191012db353dba109664fb2bc4eaa3e5f1791990 /lib | |
| parent | 827732949ba9cd844347bca1a46b2e2055810e69 (diff) | |
| download | otp-8151495812ffabf560958e5434d3edbe46f29695.tar.gz otp-8151495812ffabf560958e5434d3edbe46f29695.tar.bz2 otp-8151495812ffabf560958e5434d3edbe46f29695.zip  | |
[ct] Send tc_start event on force_stop and failed sequence
If test cases were skipped because of option {force_stop,skip_rest} or
because of a failed sequence, then no tc_start event would be sent,
only only tc_done. This is now corrected.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/common_test/src/ct_framework.erl | 42 | ||||
| -rw-r--r-- | lib/common_test/test/ct_hooks_SUITE.erl | 2 | ||||
| -rw-r--r-- | lib/common_test/test/ct_repeat_testrun_SUITE.erl | 5 | ||||
| -rw-r--r-- | lib/common_test/test/ct_test_server_if_1_SUITE.erl | 1 | 
4 files changed, 31 insertions, 19 deletions
diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index 0099607d18..dca3b8b5a2 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -88,12 +88,15 @@ init_tc(Mod,Func0,Args) ->  	andalso Func=/=end_per_group  	andalso ct_util:get_testdata(skip_rest) of  	true -> +            initialize(false,Mod,Func,Args),  	    {auto_skip,"Repeated test stopped by force_stop option"};  	_ ->  	    case ct_util:get_testdata(curr_tc) of  		{Suite,{suite0_failed,{require,Reason}}} -> +                    initialize(false,Mod,Func,Args),  		    {auto_skip,{require_failed_in_suite0,Reason}};  		{Suite,{suite0_failed,_}=Failure} -> +                    initialize(false,Mod,Func,Args),  		    {fail,Failure};  		_ ->  		    ct_util:update_testdata(curr_tc, @@ -122,16 +125,14 @@ init_tc(Mod,Func0,Args) ->  			    end,  			    init_tc1(Mod,Suite,Func,HookFunc,Args);  			{failed,Seq,BadFunc} -> -			    {auto_skip,{sequence_failed,Seq,BadFunc}} +                            initialize(false,Mod,Func,Args), +                            {auto_skip,{sequence_failed,Seq,BadFunc}}  		    end  	    end      end.  init_tc1(?MODULE,_,error_in_suite,_,[Config0]) when is_list(Config0) -> -    ct_logs:init_tc(false), -    ct_event:notify(#event{name=tc_start, -			   node=node(), -			   data={?MODULE,error_in_suite}}), +    initialize(false,?MODULE,error_in_suite),      _ = ct_suite_init(?MODULE,error_in_suite,[],Config0),      case ?val(error,Config0) of  	undefined -> @@ -181,27 +182,21 @@ init_tc1(Mod,Suite,Func,HookFunc,[Config0]) when is_list(Config0) ->  		ct_config:delete_default_config(testcase),  		HookFunc  	end, -    Initialize = fun() ->  -			 ct_logs:init_tc(false), -			 ct_event:notify(#event{name=tc_start, -						node=node(), -						data={Mod,FuncSpec}}) -		 end,      case add_defaults(Mod,Func,AllGroups) of  	Error = {suite0_failed,_} -> -	    Initialize(), +	    initialize(false,Mod,FuncSpec),  	    ct_util:set_testdata({curr_tc,{Suite,Error}}),  	    {error,Error};  	Error = {group0_failed,_} -> -	    Initialize(), +	    initialize(false,Mod,FuncSpec),  	    {auto_skip,Error};  	Error = {testcase0_failed,_} -> -	    Initialize(), +	    initialize(false,Mod,FuncSpec),  	    {auto_skip,Error};  	{SuiteInfo,MergeResult} ->  	    case MergeResult of  		{error,Reason} -> -		    Initialize(), +		    initialize(false,Mod,FuncSpec),  		    {fail,Reason};  		_ ->  		    init_tc2(Mod,Suite,Func,HookFunc1, @@ -240,11 +235,8 @@ init_tc2(Mod,Suite,Func,HookFunc,SuiteInfo,MergeResult,Config) ->  	Conns ->  	    ct_util:silence_connections(Conns)      end, -    ct_logs:init_tc(Func == init_per_suite),      FuncSpec = group_or_func(Func,Config), -    ct_event:notify(#event{name=tc_start, -			   node=node(), -			   data={Mod,FuncSpec}}), +    initialize((Func==init_per_suite),Mod,FuncSpec),      case catch configure(MergedInfo,MergedInfo,SuiteInfo,  			 FuncSpec,[],Config) of @@ -272,6 +264,18 @@ init_tc2(Mod,Suite,Func,HookFunc,SuiteInfo,MergeResult,Config) ->  	    end      end. +initialize(RefreshLogs,Mod,Func,[Config]) when is_list(Config) -> +    initialize(RefreshLogs,Mod,group_or_func(Func,Config)); +initialize(RefreshLogs,Mod,Func,_) -> +    initialize(RefreshLogs,Mod,Func). + +initialize(RefreshLogs,Mod,FuncSpec) -> +    ct_logs:init_tc(RefreshLogs), +    ct_event:notify(#event{name=tc_start, +			   node=node(), +			   data={Mod,FuncSpec}}). + +  ct_suite_init(Suite,HookFunc,PostInitHook,Config) when is_list(Config) ->      case ct_hooks:init_tc(Suite,HookFunc,Config) of  	NewConfig when is_list(NewConfig) -> diff --git a/lib/common_test/test/ct_hooks_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE.erl index e5d8f15453..7c589cea4f 100644 --- a/lib/common_test/test/ct_hooks_SUITE.erl +++ b/lib/common_test/test/ct_hooks_SUITE.erl @@ -2102,6 +2102,7 @@ test_events(failed_sequence) ->           {?eh,cth,{empty_cth,on_tc_fail,                     [seq_SUITE,test_case_1,{failed,failed_on_purpose},[]]}},           {?eh,test_stats,{0,1,{0,0}}}, +         {?eh,tc_start,{seq_SUITE,test_case_2}},           {?eh,tc_done,{seq_SUITE,test_case_2,                         {auto_skipped,{sequence_failed,seq1,test_case_1}}}},           {?eh,cth,{empty_cth,on_tc_skip, @@ -2149,6 +2150,7 @@ test_events(repeat_force_stop) ->                     [repeat_SUITE,test_case_1,'$proplist',ok,[]]}},           {?eh,tc_done,{repeat_SUITE,test_case_1,ok}},           {?eh,test_stats,{1,0,{0,0}}}, +         {?eh,tc_start,{repeat_SUITE,test_case_2}},           {?eh,tc_done,{repeat_SUITE,test_case_2,                         {auto_skipped,                          "Repeated test stopped by force_stop option"}}}, diff --git a/lib/common_test/test/ct_repeat_testrun_SUITE.erl b/lib/common_test/test/ct_repeat_testrun_SUITE.erl index f8b6a379f6..76611a2db3 100644 --- a/lib/common_test/test/ct_repeat_testrun_SUITE.erl +++ b/lib/common_test/test/ct_repeat_testrun_SUITE.erl @@ -363,14 +363,17 @@ skip_first_tc1(Suite) ->       {?eh,tc_start,{Suite,tc1}},       {?eh,tc_done,{Suite,tc1,ok}},       {?eh,test_stats,{'_',0,{0,0}}}, +     {?eh,tc_start,{Suite,tc2}},       {?eh,tc_done,{Suite,tc2,?skipped}},       {?eh,test_stats,{'_',0,{0,1}}}, +     {?eh,tc_start,{Suite,{init_per_group,g,[]}}},       {?eh,tc_done,{Suite,{init_per_group,g,[]},?skipped}},       {?eh,tc_auto_skip,{Suite,{tc1,g},?skip_reason}},       {?eh,test_stats,{'_',0,{0,2}}},       {?eh,tc_auto_skip,{Suite,{tc2,g},?skip_reason}},       {?eh,test_stats,{'_',0,{0,3}}},       {?eh,tc_auto_skip,{Suite,{end_per_group,g},?skip_reason}}, +     {?eh,tc_start,{Suite,tc2}},       {?eh,tc_done,{Suite,tc2,?skipped}},       {?eh,test_stats,{'_',0,{0,4}}},       {?eh,tc_start,{Suite,end_per_suite}}, @@ -390,10 +393,12 @@ skip_tc1_in_group(Suite) ->        {?eh,tc_start,{Suite,tc1}},        {?eh,tc_done,{Suite,tc1,ok}},        {?eh,test_stats,{'_',0,{0,0}}}, +      {?eh,tc_start,{Suite,tc2}},        {?eh,tc_done,{Suite,tc2,?skipped}},        {?eh,test_stats,{'_',0,{0,1}}},        {?eh,tc_start,{Suite,{end_per_group,g,[]}}},        {?eh,tc_done,{Suite,{end_per_group,g,[]},ok}}], +     {?eh,tc_start,{Suite,tc2}},       {?eh,tc_done,{Suite,tc2,?skipped}},       {?eh,test_stats,{'_',0,{0,2}}},       {?eh,tc_start,{Suite,end_per_suite}}, diff --git a/lib/common_test/test/ct_test_server_if_1_SUITE.erl b/lib/common_test/test/ct_test_server_if_1_SUITE.erl index 228d900545..ea8a1a5662 100644 --- a/lib/common_test/test/ct_test_server_if_1_SUITE.erl +++ b/lib/common_test/test/ct_test_server_if_1_SUITE.erl @@ -161,6 +161,7 @@ test_events(ts_if_1) ->       {?eh,tc_start,{ts_if_1_SUITE,tc4}},       {?eh,tc_done,{ts_if_1_SUITE,tc4,{failed,{error,failed_on_purpose}}}},       {?eh,test_stats,{1,2,{0,1}}}, +     {?eh,tc_start,{ts_if_1_SUITE,tc5}},       {?eh,tc_done,{ts_if_1_SUITE,tc5,{auto_skipped,{sequence_failed,seq1,tc4}}}},       {?eh,test_stats,{1,2,{0,2}}},  | 
