aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Andersson <[email protected]>2012-11-19 18:01:04 +0100
committerPeter Andersson <[email protected]>2012-11-19 18:01:04 +0100
commit44fa71f32c0e901c73808657af7b8ab38158817b (patch)
tree33042d11f842887d826844da491145b32d63815d
parent0034dfc83ad3f18a67df38b4414fe74be7cbcdf6 (diff)
downloadotp-44fa71f32c0e901c73808657af7b8ab38158817b.tar.gz
otp-44fa71f32c0e901c73808657af7b8ab38158817b.tar.bz2
otp-44fa71f32c0e901c73808657af7b8ab38158817b.zip
Fix problem with test case order in group specifications
-rw-r--r--lib/common_test/src/ct_groups.erl80
-rw-r--r--lib/common_test/test/ct_groups_search_SUITE.erl52
2 files changed, 86 insertions, 46 deletions
diff --git a/lib/common_test/src/ct_groups.erl b/lib/common_test/src/ct_groups.erl
index fc0f67d21d..24ca3826a8 100644
--- a/lib/common_test/src/ct_groups.erl
+++ b/lib/common_test/src/ct_groups.erl
@@ -287,31 +287,69 @@ rm_unwanted_tcs(Tests, all, []) ->
Tests;
rm_unwanted_tcs(Tests, TCs, []) ->
- lists:flatmap(fun(Test) when is_tuple(Test), (size(Test) > 2) ->
- [Test];
- (Test={group,_}) ->
- [Test];
- (Test={_M,TC}) ->
- case lists:member(TC, TCs) of
- true -> [Test];
- false -> []
- end;
- (Test) when is_atom(Test) ->
- case lists:keysearch(Test, 2, TCs) of
- {value,_} ->
- [Test];
- _ ->
- case lists:member(Test, TCs) of
- true -> [Test];
- false -> []
- end
- end;
- (Test) -> [Test]
- end, Tests);
+ sort_tests(lists:flatmap(fun(Test) when is_tuple(Test),
+ (size(Test) > 2) ->
+ [Test];
+ (Test={group,_}) ->
+ [Test];
+ (Test={_M,TC}) ->
+ case lists:member(TC, TCs) of
+ true -> [Test];
+ false -> []
+ end;
+ (Test) when is_atom(Test) ->
+ case lists:keysearch(Test, 2, TCs) of
+ {value,_} ->
+ [Test];
+ _ ->
+ case lists:member(Test, TCs) of
+ true -> [Test];
+ false -> []
+ end
+ end;
+ (Test) -> [Test]
+ end, Tests), TCs);
rm_unwanted_tcs(Tests, _TCs, _) ->
[Test || Test <- Tests, not is_atom(Test)].
+%% make sure the order of tests is according to the order in TCs
+sort_tests(Tests, TCs) when is_list(TCs)->
+ lists:sort(fun(T1, T2) ->
+ case {is_tc(T1),is_tc(T2)} of
+ {true,true} ->
+ (position(T1, TCs) =<
+ position(T2, TCs));
+ {false,true} ->
+ (position(T2, TCs) == (length(TCs)+1));
+ _ -> true
+
+ end
+ end, Tests);
+sort_tests(Tests, _) ->
+ Tests.
+
+is_tc(T) when is_atom(T) -> true;
+is_tc({group,_}) -> false;
+is_tc({_M,T}) when is_atom(T) -> true;
+is_tc(_) -> false.
+
+position(T, TCs) ->
+ position(T, TCs, 1).
+
+position(T, [T|_TCs], Pos) ->
+ Pos;
+position(T, [{_,T}|_TCs], Pos) ->
+ Pos;
+position({M,T}, [T|_TCs], Pos) when M /= group ->
+ Pos;
+position(T, [_|TCs], Pos) ->
+ position(T, TCs, Pos+1);
+position(_, [], Pos) ->
+ Pos.
+
+%%%-----------------------------------------------------------------
+
delete_subs([{conf, _,_,_,_} = Conf | Confs], All) ->
All1 = delete_conf(Conf, All),
case is_sub(Conf, All1) of
diff --git a/lib/common_test/test/ct_groups_search_SUITE.erl b/lib/common_test/test/ct_groups_search_SUITE.erl
index 76b2d14e5c..6b1c1f4634 100644
--- a/lib/common_test/test/ct_groups_search_SUITE.erl
+++ b/lib/common_test/test/ct_groups_search_SUITE.erl
@@ -162,7 +162,7 @@ all_groups(_) ->
%%%-----------------------------------------------------------------
%%%
testcases_in_all_groups(_) ->
- GPath = all, TCs = [sub_tc2,tc3],
+ GPath = all, TCs = [tc3,sub_tc2],
Found = ct_groups:find_groups(?M2, GPath, TCs, groups2()),
@@ -170,60 +170,61 @@ testcases_in_all_groups(_) ->
{conf,[{name,top1}],{?M2,init_per_group},
[{?M2,tc3},
{conf,[{name,sub11}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],
{?M2,end_per_group}},
{conf,[{name,sub12}],
{?M2,init_per_group},
- [{?M2,sub_tc2},{?M2,tc3},
+ [{?M2,tc3},{?M2,sub_tc2},
{conf,[{name,sub121}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],
{?M2,end_per_group}}],
{?M2,end_per_group}}],
{?M2,end_per_group}},
Top2 =
{conf,[{name,top2}],{?M2,init_per_group},
- [{conf,[{name,sub21}],
+ [{?M2,tc3},
+ {conf,[{name,sub21}],
{?M2,init_per_group},
- [{?M2,sub_tc2},{?M2,tc3},
+ [{?M2,tc3},{?M2,sub_tc2},
{conf,[{name,sub2xx}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],
{?M2,end_per_group}}],
{?M2,end_per_group}},
- {?M2,tc3}, % in top2
+
{conf,[{name,sub22}],
{?M2,init_per_group},
- [{conf,[{name,sub221}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],
+ [{?M2,tc3},{?M2,sub_tc2},
+ {conf,[{name,sub221}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],
{?M2,end_per_group}},
- {?M2,sub_tc2},{?M2,tc3}, % in sub22
{conf,[{name,sub2xx}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],
{?M2,end_per_group}}],
{?M2,end_per_group}}],
{?M2,end_per_group}},
{conf,[{name,sub21}],
{?M2,init_per_group},
- [{?M2,sub_tc2},{?M2,tc3},
+ [{?M2,tc3},{?M2,sub_tc2},
{conf,[{name,sub2xx}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],{?M2,end_per_group}}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],{?M2,end_per_group}}],
{?M2,end_per_group}},
{conf,[{name,sub22}],
{?M2,init_per_group},
- [{conf,[{name,sub221}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],{?M2,end_per_group}},
- {?M2,sub_tc2},{?M2,tc3},
+ [{?M2,tc3},{?M2,sub_tc2},
+ {conf,[{name,sub221}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],{?M2,end_per_group}},
{conf,[{name,sub2xx}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],{?M2,end_per_group}}],
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],{?M2,end_per_group}}],
{?M2,end_per_group}},
{conf,[{name,sub221}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],{?M2,end_per_group}},
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],{?M2,end_per_group}},
{conf,[{name,sub2xx}],
- {?M2,init_per_group},[{?M2,sub_tc2},{?M2,tc3}],{?M2,end_per_group}}]
+ {?M2,init_per_group},[{?M2,tc3},{?M2,sub_tc2}],{?M2,end_per_group}}]
= Found,
@@ -450,7 +451,8 @@ testcase_in_top_groups2(_) ->
{conf,[{name,top2}],
{?M2,init_per_group},
- [{conf,[{name,sub21}],
+ [{?M2,tc3},
+ {conf,[{name,sub21}],
{?M2,init_per_group},
[{?M2,tc3},
{conf,[{name,sub2xx}],
@@ -458,14 +460,14 @@ testcase_in_top_groups2(_) ->
[{?M2,tc3}],
{?M2,end_per_group}}],
{?M2,end_per_group}},
- {?M2,tc3},
+
{conf,[{name,sub22}],
{?M2,init_per_group},
- [{conf,[{name,sub221}],
+ [{?M2,tc3},
+ {conf,[{name,sub221}],
{?M2,init_per_group},
[{?M2,tc3}],
- {?M2,end_per_group}},
- {?M2,tc3},
+ {?M2,end_per_group}},
{conf,[{name,sub2xx}],
{?M2,init_per_group},
[{?M2,tc3}],