diff options
author | Peter Andersson <peppe@erlang.org> | 2012-08-24 15:02:36 +0200 |
---|---|---|
committer | Peter Andersson <peppe@erlang.org> | 2012-08-24 16:55:26 +0200 |
commit | 00455b5fec96bf320fc8b3656bb9dbd0395fa23b (patch) | |
tree | e62a013e94079b83a6dbb5d7db85d1d01d12050e /lib | |
parent | 313355eb792d9bc811b5cb979a7cf9fbc9a6c075 (diff) | |
download | otp-00455b5fec96bf320fc8b3656bb9dbd0395fa23b.tar.gz otp-00455b5fec96bf320fc8b3656bb9dbd0395fa23b.tar.bz2 otp-00455b5fec96bf320fc8b3656bb9dbd0395fa23b.zip |
Solve problem with registering parallel testcases
Diffstat (limited to 'lib')
-rw-r--r-- | lib/common_test/src/ct_framework.erl | 23 | ||||
-rw-r--r-- | lib/common_test/src/ct_util.erl | 20 | ||||
-rw-r--r-- | lib/common_test/src/cth_surefire.erl | 2 |
3 files changed, 27 insertions, 18 deletions
diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index e8d5d4708b..4d47731239 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -71,16 +71,13 @@ init_tc(Mod,Func,Config) -> {skip,{require_failed_in_suite0,Reason}}; {Suite,{suite0_failed,_}=Failure} -> {skip,Failure}; - CurrTC -> - case CurrTC of - undefined -> - ct_util:set_testdata({curr_tc,[{Suite,Func}]}); - _ when is_list(CurrTC) -> - ct_util:update_testdata(curr_tc, - fun(Running) -> - [{Suite,Func}|Running] - end) - end, + _ -> + ct_util:update_testdata(curr_tc, + fun(undefined) -> + [{Suite,Func}]; + (Running) -> + [{Suite,Func}|Running] + end, [create]), case ct_util:read_suite_data({seq,Suite,Func}) of undefined -> init_tc1(Mod,Suite,Func,Config); @@ -671,13 +668,15 @@ end_tc(Mod,Func,TCPid,Result,Args,Return) -> %% reset the curr_tc state, or delete this TC from the list of %% executing cases (if in a parallel group) ClearCurrTC = fun(Running = [_,_|_]) -> - lists:delete({Mod,Func},Running); + lists:keydelete(Func,2,Running); ({_,{suite0_failed,_}}) -> undefined; ([{_,CurrTC}]) when CurrTC == Func -> undefined; (undefined) -> - undefined + undefined; + (Unexpected) -> + exit({error,{reset_curr_tc,{Mod,Func},Unexpected}}) end, ct_util:update_testdata(curr_tc,ClearCurrTC), diff --git a/lib/common_test/src/ct_util.erl b/lib/common_test/src/ct_util.erl index efc85543ac..cf891ed043 100644 --- a/lib/common_test/src/ct_util.erl +++ b/lib/common_test/src/ct_util.erl @@ -39,7 +39,7 @@ delete_suite_data/0, delete_suite_data/1, match_delete_suite_data/1, delete_testdata/0, delete_testdata/1, set_testdata/1, get_testdata/1, get_testdata/2, - set_testdata_async/1, update_testdata/2]). + set_testdata_async/1, update_testdata/2, update_testdata/3]). -export([override_silence_all_connections/0, override_silence_connections/1, get_overridden_silenced_connections/0, @@ -252,7 +252,10 @@ delete_testdata(Key) -> call({delete_testdata, Key}). update_testdata(Key, Fun) -> - call({update_testdata, Key, Fun}). + update_testdata(Key, Fun, []). + +update_testdata(Key, Fun, Opts) -> + call({update_testdata, Key, Fun, Opts}). set_testdata(TestData) -> call({set_testdata, TestData}). @@ -333,7 +336,7 @@ loop(Mode,TestData,StartDir) -> return(From,undefined) end, loop(From,TestData,StartDir); - {{update_testdata,Key,Fun},From} -> + {{update_testdata,Key,Fun,Opts},From} -> TestData1 = case lists:keysearch(Key,1,TestData) of {value,{Key,Val}} -> @@ -341,8 +344,15 @@ loop(Mode,TestData,StartDir) -> return(From,NewVal), [{Key,NewVal}|lists:keydelete(Key,1,TestData)]; _ -> - return(From,undefined), - TestData + case lists:member(create,Opts) of + true -> + InitVal = Fun(undefined), + return(From,InitVal), + [{Key,InitVal}|TestData]; + false -> + return(From,undefined), + TestData + end end, loop(From,TestData1,StartDir); {{set_cwd,Dir},From} -> diff --git a/lib/common_test/src/cth_surefire.erl b/lib/common_test/src/cth_surefire.erl index e7bd84e51b..76b0f0b5ea 100644 --- a/lib/common_test/src/cth_surefire.erl +++ b/lib/common_test/src/cth_surefire.erl @@ -92,7 +92,7 @@ on_tc_fail(_TC, Res, State) -> {fail,lists:flatten(io_lib:format("~p",[Res]))} }, State#state{ test_cases = [NewTC | tl(TCs)]}. -on_tc_skip(Tc,{Type,Reason} = Res, State) when Type == tc_auto_skip -> +on_tc_skip(Tc,{Type,_Reason} = Res, State) when Type == tc_auto_skip -> do_tc_skip(Res, end_tc(Tc,[],Res,init_tc(State,[]))); on_tc_skip(_Tc, _Res, State = #state{test_cases = []}) -> State; |