File 1285-Update-the-doc-CT-test_spec-grammar-to-match-actual-.patch of Package erlang
From da1224651c206e4ef33a1575fb37ff0877ab4847 Mon Sep 17 00:00:00 2001
From: acw224 <thomasdcuvillier@gmail.com>
Date: Tue, 3 Aug 2021 08:26:13 -0700
Subject: [PATCH 1/2] Update the doc CT test_spec grammar to match actual
behavior
The grammar in the doc doesn't match actual behavior
Two problems:
Groups = GroupPath, GroupPath = [GroupName] leads to think that
[group1, group2] is the group path group1-group2 whereas it is
understood as an array of GroupSpec.
GroupSpec = [group, properties, GroupSpec] was not recognised, only
[group, properties, [GroupSpec]
An updated grammar is proposed, together with additional tests
to validate the pertinence of the new grammar.
---
lib/common_test/doc/src/run_test_chapter.xml | 8 +-
lib/common_test/test/ct_testspec_1_SUITE.erl | 189 ++++++++++++++++--
.../groups_1/groups_11_SUITE.erl | 50 ++++-
3 files changed, 222 insertions(+), 25 deletions(-)
diff --git a/lib/common_test/doc/src/run_test_chapter.xml b/lib/common_test/doc/src/run_test_chapter.xml
index 0b8657ced3..1d88abc27e 100644
--- a/lib/common_test/doc/src/run_test_chapter.xml
+++ b/lib/common_test/doc/src/run_test_chapter.xml
@@ -955,9 +955,9 @@
Dir = string()
Suites = atom() | [atom()] | all
Suite = atom()
- Groups = GroupPath | [GroupPath] | GroupSpec | [GroupSpec] | all
- GroupPath = [GroupName]
- GroupSpec = GroupName | {GroupName,Properties} | {GroupName,Properties,GroupSpec}
+ Groups = GroupPath | GroupSpec | [GroupSpec] | all
+ GroupPath = [[GroupName]]
+ GroupSpec = GroupName | {GroupName,Properties} | {GroupName,Properties,[GroupSpec]}
GroupName = atom()
GroupNames = GroupName | [GroupName]
Cases = atom() | [atom()] | all
@@ -1608,5 +1608,3 @@ div.error pre { color:white }</pre>
</section>
</chapter>
-
-
diff --git a/lib/common_test/test/ct_testspec_1_SUITE.erl b/lib/common_test/test/ct_testspec_1_SUITE.erl
index 2d2c42999f..31ae19a033 100644
--- a/lib/common_test/test/ct_testspec_1_SUITE.erl
+++ b/lib/common_test/test/ct_testspec_1_SUITE.erl
@@ -63,6 +63,8 @@ all() ->
[all_suites, skip_all_suites, suite, skip_suite,
all_testcases, skip_all_testcases, testcase,
skip_testcase, all_groups, skip_all_groups, group,
+ group_path, group_config,
+ group_spec, multi_group, multi_group_config,
skip_group, group_all_testcases,
skip_group_all_testcases, group_testcase,
skip_group_testcase, topgroup, subgroup, skip_subgroup,
@@ -207,12 +209,41 @@ skip_all_groups(Config) when is_list(Config) ->
group(Config) when is_list(Config) ->
DataDir = ?config(data_dir, Config),
-
TestDir = filename:join(DataDir, "groups_1"),
TestSpec = [{groups,TestDir,groups_11_SUITE,test_group_1a}],
-
setup_and_execute(group, TestSpec, Config).
+group_path(Config) when is_list(Config) ->
+ DataDir = ?config(data_dir, Config),
+ TestDir = filename:join(DataDir, "groups_1"),
+ TestSpec = [{groups,TestDir,groups_11_SUITE,[[test_group_2, test_group_3]]}],
+ setup_and_execute(group_path, TestSpec, Config).
+
+group_config(Config) when is_list(Config) ->
+ DataDir = ?config(data_dir, Config),
+ TestDir = filename:join(DataDir, "groups_1"),
+ TestSpec = [{groups,TestDir,groups_11_SUITE, {test_group_1c, [parallel]}}],
+ setup_and_execute(group_config, TestSpec, Config).
+
+group_spec(Config) when is_list(Config) ->
+ DataDir = ?config(data_dir, Config),
+ TestDir = filename:join(DataDir, "groups_1"),
+ TestSpec = [{groups,TestDir,groups_11_SUITE, {test_group_2, [parallel], [{test_group_3, [sequence]}]}}],
+ setup_and_execute(group_spec, TestSpec, Config).
+
+multi_group(Config) when is_list(Config) ->
+ DataDir = ?config(data_dir, Config),
+ TestDir = filename:join(DataDir, "groups_1"),
+ TestSpec = [{groups,TestDir,groups_11_SUITE, [test_group_1a, test_group_3]}],
+ setup_and_execute(multi_group, TestSpec, Config).
+
+multi_group_config(Config) when is_list(Config) ->
+ DataDir = ?config(data_dir, Config),
+ TestDir = filename:join(DataDir, "groups_1"),
+ TestSpec = [{groups,TestDir,groups_11_SUITE, [{test_group_2, [parallel], [{test_group_3, [sequence]}]},
+ {test_group_9, [sequence], [{test_group_8, [parallel]}]}]}],
+ setup_and_execute(multi_group_config, TestSpec, Config).
+
skip_group(Config) when is_list(Config) ->
DataDir = ?config(data_dir, Config),
@@ -224,7 +255,6 @@ skip_group(Config) when is_list(Config) ->
setup_and_execute(skip_group, TestSpec, Config).
-
%%%-----------------------------------------------------------------
%%%
@@ -753,7 +783,7 @@ test_events(all_groups) ->
[
{?eh,start_logging,'_'},
{?eh,tc_start,{groups_11_SUITE,init_per_suite}},
- {?eh,test_stats,{12,0,{0,0}}},
+ {?eh,test_stats,{16,0,{0,0}}},
{?eh,tc_done,{groups_11_SUITE,end_per_suite,'_'}},
{negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
];
@@ -761,7 +791,7 @@ test_events(all_groups) ->
test_events(skip_all_groups) ->
[
{?eh,start_logging,'_'},
- {?eh,start_info,{1,1,12}},
+ {?eh,start_info,{1,1,16}},
{?eh,tc_start,{groups_11_SUITE,init_per_suite}},
{?eh,tc_user_skip,{groups_11_SUITE,{init_per_group,test_group_1a},"SKIPPED!"}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_1a,test_group_1a},"SKIPPED!"}},
@@ -775,26 +805,38 @@ test_events(skip_all_groups) ->
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_1b,test_group_1b},"SKIPPED!"}},
{?eh,test_stats,{0,0,{4,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{end_per_group,test_group_1b},"SKIPPED!"}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{init_per_group,test_group_1c},"SKIPPED!"}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{testcase_1a,test_group_1c},"SKIPPED!"}},
+ {?eh,test_stats,{0,0,{5,0}}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{testcase_1b,test_group_1c},"SKIPPED!"}},
+ {?eh,test_stats,{0,0,{6,0}}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{end_per_group,test_group_1c},"SKIPPED!"}},
{?eh,tc_user_skip,{groups_11_SUITE,{init_per_group,test_group_2},"SKIPPED!"}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_2a,test_group_2},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{5,0}}},
+ {?eh,test_stats,{0,0,{7,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_3a,test_group_3},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{6,0}}},
+ {?eh,test_stats,{0,0,{8,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_3b,test_group_3},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{7,0}}},
+ {?eh,test_stats,{0,0,{9,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_2b,test_group_2},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{8,0}}},
+ {?eh,test_stats,{0,0,{10,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{end_per_group,test_group_2},"SKIPPED!"}},
{?eh,tc_user_skip,{groups_11_SUITE,{init_per_group,test_group_4},"SKIPPED!"}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_5a,test_group_5},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{9,0}}},
+ {?eh,test_stats,{0,0,{11,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_7a,test_group_7},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{10,0}}},
+ {?eh,test_stats,{0,0,{12,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_7b,test_group_7},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{11,0}}},
+ {?eh,test_stats,{0,0,{13,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{testcase_5b,test_group_5},"SKIPPED!"}},
- {?eh,test_stats,{0,0,{12,0}}},
+ {?eh,test_stats,{0,0,{14,0}}},
{?eh,tc_user_skip,{groups_11_SUITE,{end_per_group,test_group_4},"SKIPPED!"}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{init_per_group,test_group_9},"SKIPPED!"}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{testcase_9,test_group_9},"SKIPPED!"}},
+ {?eh,test_stats,{0,0,{15,0}}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{testcase_8,test_group_8},"SKIPPED!"}},
+ {?eh,test_stats,{0,0,{16,0}}},
+ {?eh,tc_user_skip,{groups_11_SUITE,{end_per_group,test_group_9},"SKIPPED!"}},
{?eh,tc_start,{groups_11_SUITE,end_per_suite}},
{?eh,tc_done,{groups_11_SUITE,end_per_suite,ok}},
{negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
@@ -813,6 +855,29 @@ test_events(group) ->
{negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
];
+test_events(group_path) ->
+ [
+ {?eh,start_logging,'_'},
+ {?eh,tc_start,{groups_11_SUITE,init_per_suite}},
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_2,[sequence]}}},
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_3,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_3,[parallel]},'_'}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_2,[sequence]},'_'}},
+ {?eh,tc_done,{groups_11_SUITE,end_per_suite,'_'}},
+ {negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
+ ];
+
+test_events(group_config) ->
+ [
+ {?eh,start_logging,'_'},
+ {?eh,tc_start,{groups_11_SUITE,init_per_suite}},
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_1c,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_1c,[parallel]},'_'}},
+ {?eh,tc_done,{groups_11_SUITE,end_per_suite,'_'}},
+ {negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
+ ];
+
+
test_events(skip_group) ->
[
{?eh,start_logging,'_'},
@@ -858,6 +923,104 @@ test_events(group_all_testcases) ->
{negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
];
+test_events(group_spec) ->
+ [
+ {?eh,start_logging,'_'},
+ {?eh,tc_start,{groups_11_SUITE,init_per_suite}},
+ {parallel, [
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_2,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{init_per_group,test_group_2,[parallel]},ok}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_2a}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_2a,ok}},
+ [
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_3,[sequence]}}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_3a}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_3b}},
+ {?eh,test_stats,{3,0,{0,0}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_3,[sequence]},'_'}}
+ ],
+ {?eh,tc_start,{groups_11_SUITE,testcase_2b}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_2b,ok}},
+ {?eh,test_stats,{4,0,{0,0}}},
+ {?eh,tc_start,{groups_11_SUITE,{end_per_group,test_group_2,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_2,[parallel]},ok}}
+ ]},
+ {?eh,tc_done,{groups_11_SUITE,end_per_suite,'_'}},
+ {negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
+ ];
+
+test_events(multi_group) ->
+ [
+ {?eh,start_logging,'_'},
+ {?eh,tc_start,{groups_11_SUITE,init_per_suite}},
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_1a,[]}}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_1a}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_1b}},
+ {?eh,test_stats,{2,0,{0,0}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_1a,[]},'_'}},
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_2,[sequence]}}},
+ {parallel, [
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_3,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{init_per_group,test_group_3,[parallel]}, ok}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_3a}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_3a,ok}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_3b}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_3b,ok}},
+ {?eh,test_stats,{4,0,{0,0}}},
+ {?eh,tc_start,{groups_11_SUITE,{end_per_group,test_group_3,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_3,[parallel]}, ok}}
+ ]},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_2,[sequence]},'_'}},
+ {?eh,tc_done,{groups_11_SUITE,end_per_suite,'_'}},
+ {negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
+ ];
+
+test_events(multi_group_config) ->
+ [
+ {?eh,start_logging,'_'},
+ {?eh,tc_start,{groups_11_SUITE,init_per_suite}},
+ {parallel, [
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_2,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{init_per_group,test_group_2,[parallel]},ok}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_2a}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_2a,ok}},
+ [
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_3,[sequence]}}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_3a}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_3b}},
+ {?eh,test_stats,{3,0,{0,0}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_3,[sequence]},'_'}}
+ ],
+ {?eh,tc_start,{groups_11_SUITE,testcase_2b}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_2b,ok}},
+ {?eh,test_stats,{4,0,{0,0}}},
+ {?eh,tc_start,{groups_11_SUITE,{end_per_group,test_group_2,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_2,[parallel]},ok}}
+ ]},
+ [
+ {?eh,tc_start,{groups_11_SUITE,{init_per_group,test_group_9,[sequence]}}},
+ {?eh,tc_done,{groups_11_SUITE,{init_per_group,test_group_9,[sequence]},ok}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_9}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_9,ok}},
+ {?eh,test_stats,{5,0,{0,0}}},
+ {parallel,[
+ {?eh,tc_start,
+ {groups_11_SUITE,{init_per_group,test_group_8,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{init_per_group,test_group_8,[parallel]},ok}},
+ {?eh,tc_start,{groups_11_SUITE,testcase_8}},
+ {?eh,tc_done,{groups_11_SUITE,testcase_8,ok}},
+ {?eh,test_stats,{6,0,{0,0}}},
+ {?eh,tc_start,{groups_11_SUITE,{end_per_group,test_group_8,[parallel]}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_8,[parallel]},ok}}
+ ]},
+ {?eh,tc_start,{groups_11_SUITE,{end_per_group,test_group_9,[sequence]}}},
+ {?eh,tc_done,{groups_11_SUITE,{end_per_group,test_group_9,[sequence]},ok}}
+ ],
+ {?eh,tc_done,{groups_11_SUITE,end_per_suite,'_'}},
+ {negative,{?eh,tc_start,'_'},{?eh,stop_logging,'_'}}
+ ];
+
+
test_events(skip_group_all_testcases) ->
[
{?eh,start_logging,'_'},
diff --git a/lib/common_test/test/ct_testspec_1_SUITE_data/groups_1/groups_11_SUITE.erl b/lib/common_test/test/ct_testspec_1_SUITE_data/groups_1/groups_11_SUITE.erl
index 4d481fe3b8..56c97d9782 100644
--- a/lib/common_test/test/ct_testspec_1_SUITE_data/groups_1/groups_11_SUITE.erl
+++ b/lib/common_test/test/ct_testspec_1_SUITE_data/groups_1/groups_11_SUITE.erl
@@ -36,9 +36,11 @@ groups() ->
{test_group_1b, [], [testcase_1a,testcase_1b]},
- {test_group_2, [], [testcase_2a,
+ {test_group_1c, [sequence], [testcase_1a,testcase_1b]},
- {test_group_3, [], [testcase_3a,
+ {test_group_2, [sequence], [testcase_2a,
+
+ {test_group_3, [parallel], [testcase_3a,
testcase_3b]},
testcase_2b]},
@@ -49,7 +51,12 @@ groups() ->
testcase_5b]}]},
{test_group_6, [{group, test_group_7}]},
- {test_group_7, [testcase_7a,testcase_7b]}
+ {test_group_7, [testcase_7a,testcase_7b]},
+
+ {test_group_8, [sequence], [testcase_8]},
+
+ {test_group_9, [parallel], [testcase_9, {group, test_group_8}]}
+
].
all() ->
@@ -64,10 +71,11 @@ all() ->
%% this func only for internal test purposes
grs_and_tcs() ->
{[
- test_group_1a, test_group_1b,
+ test_group_1a, test_group_1b, test_group_1c,
test_group_2, test_group_3,
test_group_4, test_group_5,
- test_group_6, test_group_7
+ test_group_6, test_group_7,
+ test_group_8, test_group_9
],
[
testcase_1,
@@ -77,7 +85,9 @@ grs_and_tcs() ->
testcase_3a, testcase_3b,
testcase_3,
testcase_5a, testcase_5b,
- testcase_7a, testcase_7b
+ testcase_7a, testcase_7b,
+ testcase_8,
+ testcase_9
]}.
%%--------------------------------------------------------------------
@@ -95,7 +105,10 @@ end_per_suite(Config) ->
%%--------------------------------------------------------------------
init_per_group(Group, Config) ->
- [{name,Group}] = ?config(tc_group_properties,Config),
+ Group = case ?config(tc_group_properties,Config) of
+ [{name, Group0}] -> Group0;
+ [{name, Group0}, _Props] -> Group0
+ end,
{Grs,_} = grs_and_tcs(),
case lists:member(Group, Grs) of
true ->
@@ -164,8 +177,11 @@ testcase_1a(Config) ->
_ ->
case ?config(test_group_1b,Config) of
test_group_1b -> ok;
+ _ -> case ?config(test_group_1c,Config) of
+ test_group_1c -> ok;
_ -> ct:fail(no_group_data)
end
+ end
end,
testcase_1a = ?config(testcase_1a,Config),
ok.
@@ -178,8 +194,11 @@ testcase_1b(Config) ->
_ ->
case ?config(test_group_1b,Config) of
test_group_1b -> ok;
+ _ -> case ?config(test_group_1c,Config) of
+ test_group_1c -> ok;
_ -> ct:fail(no_group_data)
end
+ end
end,
undefined = ?config(testcase_1a,Config),
testcase_1b = ?config(testcase_1b,Config),
@@ -191,6 +210,7 @@ testcase_2(Config) ->
init = ?config(suite,Config),
undefined = ?config(test_group_1a,Config),
undefined = ?config(test_group_1b,Config),
+ undefined = ?config(test_group_1c, Config),
testcase_2 = ?config(testcase_2,Config),
ok.
@@ -280,3 +300,19 @@ testcase_7b(Config) ->
undefined = ?config(testcase_7a,Config),
testcase_7b = ?config(testcase_7b,Config),
ok.
+testcase_8() ->
+ [].
+testcase_8(Config) ->
+ init = ?config(suite,Config),
+ test_group_9 = ?config(test_group_9,Config),
+ test_group_8 = ?config(test_group_8,Config),
+ testcase_8 = ?config(testcase_8,Config),
+ ok.
+testcase_9() ->
+ [].
+testcase_9(Config) ->
+ init = ?config(suite,Config),
+ test_group_9 = ?config(test_group_9,Config),
+ undefined = ?config(test_group_8,Config),
+ testcase_9 = ?config(testcase_9,Config),
+ ok.
--
2.31.1