diff options
author | Björn Gustavsson <[email protected]> | 2012-11-01 12:24:28 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2012-11-07 14:14:00 +0100 |
commit | 983b1a407119f427a9203769bb94784b1bf0563b (patch) | |
tree | 768060a206b11c9a2dfb4f044f6737d3f670a492 /lib/common_test/test | |
parent | e6c3f2c107366c12edcd7a9b26e08642501fc888 (diff) | |
download | otp-983b1a407119f427a9203769bb94784b1bf0563b.tar.gz otp-983b1a407119f427a9203769bb94784b1bf0563b.tar.bz2 otp-983b1a407119f427a9203769bb94784b1bf0563b.zip |
Handle ct:abort_current_testcase/1 when executing parallel groups
ct:abort_current_testcase/1 (which is a wrapper for the function
with the same name in test_server_ctrl) would not work as expected
when a group with parallel test cases was executing. Essentially,
the abort_current_testcase message would be ignored until the group
has finished and would then abort the end_per_group testcase for
the group.
Since there is no unique current testcase when a parallel group is
executing, we must handle the abort_current_testcase message and
return an error tuple.
Also fix the bug that test_server_ctrl:abort_current_testcase/1
would always return 'ok'.
Diffstat (limited to 'lib/common_test/test')
-rw-r--r-- | lib/common_test/test/ct_error_SUITE.erl | 9 | ||||
-rw-r--r-- | lib/common_test/test/ct_error_SUITE_data/error/test/misc_error_1_SUITE.erl | 12 |
2 files changed, 17 insertions, 4 deletions
diff --git a/lib/common_test/test/ct_error_SUITE.erl b/lib/common_test/test/ct_error_SUITE.erl index eda98a1bf6..6d90b29f41 100644 --- a/lib/common_test/test/ct_error_SUITE.erl +++ b/lib/common_test/test/ct_error_SUITE.erl @@ -1404,7 +1404,7 @@ test_events(misc_errors) -> [ {?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, - {?eh,start_info,{1,1,7}}, + {?eh,start_info,{1,1,9}}, {?eh,tc_start,{misc_error_1_SUITE,ct_fail_1}}, {?eh,tc_done,{misc_error_1_SUITE,ct_fail_1, {failed,{error,{test_case_failed,{error,this_is_expected}}}}}}, @@ -1431,7 +1431,12 @@ test_events(misc_errors) -> {?eh,tc_start,{misc_error_1_SUITE,killed_by_signal_2}}, {?eh,tc_done,{misc_error_1_SUITE,killed_by_signal_2, {failed,testcase_aborted_or_killed}}}, - {?eh,test_stats,{0,7,{0,0}}}, + {parallel, + [{?eh,tc_start,{misc_error_1_SUITE,p1}}, + {?eh,tc_done,{misc_error_1_SUITE,p1,ok}}, + {?eh,tc_start,{misc_error_1_SUITE,p2}}, + {?eh,tc_done,{misc_error_1_SUITE,p2,ok}}]}, + {?eh,test_stats,{2,7,{0,0}}}, {?eh,test_done,{'DEF','STOP_TIME'}}, {?eh,stop_logging,[]} ]. diff --git a/lib/common_test/test/ct_error_SUITE_data/error/test/misc_error_1_SUITE.erl b/lib/common_test/test/ct_error_SUITE_data/error/test/misc_error_1_SUITE.erl index 99c3ed05ec..61f3fa7e59 100644 --- a/lib/common_test/test/ct_error_SUITE_data/error/test/misc_error_1_SUITE.erl +++ b/lib/common_test/test/ct_error_SUITE_data/error/test/misc_error_1_SUITE.erl @@ -96,7 +96,7 @@ end_per_testcase(_TestCase, _Config) -> %% N = integer() | forever %%-------------------------------------------------------------------- groups() -> - []. + [{p,[parallel],[p1,p2]}]. %%-------------------------------------------------------------------- %% Function: all() -> GroupsAndTestCases | {skip,Reason} @@ -107,7 +107,8 @@ groups() -> %%-------------------------------------------------------------------- all() -> [ct_fail_1, ct_fail_2, ct_fail_3, ts_fail_1, ts_fail_2, - killed_by_signal_1, killed_by_signal_2]. + killed_by_signal_1, killed_by_signal_2, + {group,p}]. ct_fail_1(_) -> ct:fail({error,this_is_expected}), @@ -152,3 +153,10 @@ killed_by_signal_2(_) -> end), ct:sleep(1000), exit(this_should_not_be_seen). + +p1(_) -> + {error,parallel_group} = ct:abort_current_testcase(aborted), + ok. + +p2(_) -> + receive after 1000 -> ok end. |