Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
1200-common_test-Fix-Config-leakage-for-nested-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 1200-common_test-Fix-Config-leakage-for-nested-groups.patch of Package erlang
From 51ada4158ee66e84e850dd8bc57f1081331dd959 Mon Sep 17 00:00:00 2001 From: Jakub Witczak <kuba@erlang.org> Date: Tue, 20 Apr 2021 20:07:46 +0200 Subject: [PATCH] common_test: Fix Config leakage for nested groups Before this change Config leaked between test groups in case of a subgroup was skipped (GH-3480). --- lib/common_test/src/test_server_ctrl.erl | 2 +- lib/common_test/test/ct_skip_SUITE.erl | 52 +++++++- .../skip/test/user_skip_13_SUITE.erl | 114 ++++++++++++++++++ 3 files changed, 161 insertions(+), 7 deletions(-) create mode 100644 lib/common_test/test/ct_skip_SUITE_data/skip/test/user_skip_13_SUITE.erl diff --git a/lib/common_test/src/test_server_ctrl.erl b/lib/common_test/src/test_server_ctrl.erl index dbd5537206..2674b02798 100644 --- a/lib/common_test/src/test_server_ctrl.erl +++ b/lib/common_test/src/test_server_ctrl.erl @@ -2851,7 +2851,7 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0, stop_minor_log_file(), run_test_cases_loop(skip_cases_upto(Ref, Cases, Reason, conf, CurrMode, skip_case), - [hd(Config)|Config], TimetrapData, Mode, + Config, TimetrapData, Mode, delete_status(Ref, Status2)); {_,{skip_and_save,Reason,_SavedConfig},_} when StartConf -> ReportAbortRepeat(skipped), diff --git a/lib/common_test/test/ct_skip_SUITE.erl b/lib/common_test/test/ct_skip_SUITE.erl index 06152ed354..43c69d21ba 100644 --- a/lib/common_test/test/ct_skip_SUITE.erl +++ b/lib/common_test/test/ct_skip_SUITE.erl @@ -119,7 +119,8 @@ user_skip(Config) when is_list(Config) -> Join(DataDir, "user_skip_3_SUITE"), Join(DataDir, "user_skip_4_SUITE"), Join(DataDir, "user_skip_5_SUITE"), - Join(DataDir, "user_skip_6_SUITE")], + Join(DataDir, "user_skip_6_SUITE"), + Join(DataDir, "user_skip_13_SUITE")], {Opts,ERPid} = setup({suite,Suites}, Config), ok = ct_test_support:run(Opts, Config), @@ -566,7 +567,7 @@ test_events(auto_skip) -> test_events(user_skip) -> [{?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, - {?eh,start_info,{6,6,35}}, + {?eh,start_info,{7,7,39}}, {?eh,tc_start,{user_skip_1_SUITE,init_per_suite}}, {?eh,tc_done, @@ -723,15 +724,54 @@ test_events(user_skip) -> {?eh,tc_user_skip,{user_skip_6_SUITE,{tc4,psub2},"Sub group skipped"}}, {?eh,tc_user_skip,{user_skip_6_SUITE,{end_per_group,psub2}, "Sub group skipped"}}]}, - {?eh,tc_start,{user_skip_6_SUITE,tc2}}, {?eh,tc_done,{user_skip_6_SUITE,tc2,ok}}, {?eh,test_stats,{8,0,{27,0}}}, {?eh,tc_start,{user_skip_6_SUITE,{end_per_group,ptop2,[parallel]}}}, {?eh,tc_done,{user_skip_6_SUITE,{end_per_group,ptop2,[parallel]},ok}}]}, - - {?eh,test_done,{'DEF','STOP_TIME'}}, - {?eh,stop_logging,[]} + + [{?eh,tc_start,{user_skip_13_SUITE,{init_per_group,top1,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{init_per_group,top1,[]},ok}}, + [{?eh,tc_start,{user_skip_13_SUITE,{init_per_group,sub11,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{init_per_group,sub11,[]},ok}}, + {?eh,tc_start,{user_skip_13_SUITE,tc1}}, + {?eh,tc_done,{user_skip_13_SUITE,tc1,ok}}, + {?eh,test_stats,{9,0,{27,0}}}, + {?eh,tc_start,{user_skip_13_SUITE,{end_per_group,sub11,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{end_per_group,sub11,[]},ok}}], + [{?eh,tc_start,{user_skip_13_SUITE,{init_per_group,sub12,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE, {init_per_group,sub12,[]}, + {skipped,"Sub group skipped"}}}, + {?eh,tc_user_skip,{user_skip_13_SUITE,{tc1,sub12},"Sub group skipped"}}, + {?eh,test_stats,{9,0,{28,0}}}, + {?eh,tc_user_skip,{user_skip_13_SUITE,{end_per_group,sub12}, + "Sub group skipped"}}, + {?eh,tc_start,{user_skip_13_SUITE,{end_per_group,top1,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{end_per_group,top1,[]},ok}} + ]], + [{?eh,tc_start,{user_skip_13_SUITE,{init_per_group,top2,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{init_per_group,top2,[]},ok}}, + [{?eh,tc_start, + {user_skip_13_SUITE,{init_per_group,sub21,[]}}}, + {?eh,tc_done, + {user_skip_13_SUITE,{init_per_group,sub21,[]},ok}}, + {?eh,tc_start,{user_skip_13_SUITE,tc2}}, + {?eh,tc_done,{user_skip_13_SUITE,tc2,ok}}, + {?eh,test_stats,{10,0,{28,0}}}, + {?eh,tc_start,{user_skip_13_SUITE,{end_per_group,sub21,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{end_per_group,sub21,[]},ok}}], + [{?eh,tc_start,{user_skip_13_SUITE,{init_per_group,sub22,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{init_per_group,sub22,[]},ok}}, + {?eh,tc_start,{user_skip_13_SUITE,tc2}}, + {?eh,tc_done,{user_skip_13_SUITE,tc2,ok}}, + {?eh,test_stats,{11,0,{28,0}}}, + {?eh,tc_start,{user_skip_13_SUITE,{end_per_group,sub22,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{end_per_group,sub22,[]},ok}}], + {?eh,tc_start,{user_skip_13_SUITE,{end_per_group,top2,[]}}}, + {?eh,tc_done,{user_skip_13_SUITE,{end_per_group,top2,[]},ok}}], + + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]} ]; test_events(testspec_skip) -> diff --git a/lib/common_test/test/ct_skip_SUITE_data/skip/test/user_skip_13_SUITE.erl b/lib/common_test/test/ct_skip_SUITE_data/skip/test/user_skip_13_SUITE.erl new file mode 100644 index 0000000000..3b9e388328 --- /dev/null +++ b/lib/common_test/test/ct_skip_SUITE_data/skip/test/user_skip_13_SUITE.erl @@ -0,0 +1,114 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2009-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(user_skip_13_SUITE). + +-compile(export_all). +-define(TOP1_KEY, top1_key). + +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% Function: suite() -> Info +%% Info = [tuple()] +%%-------------------------------------------------------------------- +suite() -> + [{timetrap,{seconds,30}}]. + +%%-------------------------------------------------------------------- +%% Function: init_per_group(GroupName, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%%-------------------------------------------------------------------- +init_per_group(top1, Config) -> + [{?TOP1_KEY, top1_specific} | Config]; +init_per_group(sub12, Config) -> + {skip,"Sub group skipped"}; +init_per_group(_GroupName, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% Function: end_per_group(GroupName, Config0) -> +%% void() | {save_config,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%%-------------------------------------------------------------------- +end_per_group(_GroupName, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% Function: init_per_testcase(TestCase, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%%-------------------------------------------------------------------- +init_per_testcase(_TestCase, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% Function: end_per_testcase(TestCase, Config0) -> +%% void() | {save_config,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%%-------------------------------------------------------------------- +end_per_testcase(_TestCase, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% Function: groups() -> [Group] +%% Group = {GroupName,Properties,GroupsAndTestCases} +%% GroupName = atom() +%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}] +%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase] +%% TestCase = atom() +%% Shuffle = shuffle | {shuffle,{integer(),integer(),integer()}} +%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail | +%% repeat_until_any_ok | repeat_until_any_fail +%% N = integer() | forever +%%-------------------------------------------------------------------- +groups() -> + [{top1,[],[{sub11, [], [tc1]}, {sub12, [], [tc1]}]}, + {top2,[],[{sub21, [], [tc2]}, {sub22, [], [tc2]}]}]. + +%%-------------------------------------------------------------------- +%% Function: all() -> GroupsAndTestCases | {skip,Reason} +%% GroupsAndTestCases = [{group,GroupName} | TestCase] +%% GroupName = atom() +%% TestCase = atom() +%% Reason = term() +%%-------------------------------------------------------------------- +all() -> + [{group,top1}, {group,top2}]. + +%%-------------------------------------------------------------------- +%% Function: TestCase(Config0) -> +%% ok | exit() | {skip,Reason} | {comment,Comment} | +%% {save_config,Config1} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% Comment = term() +%%-------------------------------------------------------------------- +tc1(_) -> + ok. + +tc2(Config) -> + undefined = ?config(?TOP1_KEY, Config). -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor