diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/common_test/src/ct.erl | 2 | ||||
| -rw-r--r-- | lib/common_test/src/ct_framework.erl | 15 | ||||
| -rw-r--r-- | lib/common_test/src/ct_util.erl | 25 | ||||
| -rw-r--r-- | lib/test_server/src/test_server.erl | 4 | 
4 files changed, 39 insertions, 7 deletions
| diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl index 241cd928b7..85afdc7834 100644 --- a/lib/common_test/src/ct.erl +++ b/lib/common_test/src/ct.erl @@ -773,7 +773,7 @@ comment(Format, Args) when is_list(Format), is_list(Args) ->  send_html_comment(Comment) ->      Html = "<font color=\"green\">" ++ Comment ++ "</font>", -    ct_util:set_testdata({comment,Html}), +    ct_util:set_testdata({{comment,group_leader()},Html}),      test_server:comment(Html).  %%%----------------------------------------------------------------- diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index 9ef917a507..20903607dc 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -657,7 +657,18 @@ end_tc(Mod,Func,TCPid,Result,Args,Return) ->  	_ ->  	    ok      end, -    ct_util:delete_testdata(comment), +    if Func == end_per_group; Func == end_per_suite -> +	    %% clean up any saved comments +	    ct_util:match_delete_testdata({comment,'_'}); +       true -> +	    %% attemp to delete any saved comment for this TC +	    case process_info(TCPid, group_leader) of +		{group_leader,TCGL} -> +		    ct_util:delete_testdata({comment,TCGL}); +		_ -> +		    ok +	    end +    end,      ct_util:delete_suite_data(last_saved_config),      FuncSpec = group_or_func(Func,Args), @@ -850,7 +861,7 @@ error_notification(Mod,Func,_Args,{Error,Loc}) ->  	_ ->			       	    %% this notification comes from the test case process, so  	    %% we can add error info to comment with test_server:comment/1 -	    case ct_util:get_testdata(comment) of +	    case ct_util:get_testdata({comment,group_leader()}) of  		undefined ->  		    test_server:comment(ErrorHtml);  		Comment -> diff --git a/lib/common_test/src/ct_util.erl b/lib/common_test/src/ct_util.erl index f5eb3a72f0..56027586d1 100644 --- a/lib/common_test/src/ct_util.erl +++ b/lib/common_test/src/ct_util.erl @@ -37,7 +37,7 @@  	 save_suite_data_async/3, save_suite_data_async/2,  	 read_suite_data/1,   	 delete_suite_data/0, delete_suite_data/1, match_delete_suite_data/1, -	 delete_testdata/0, delete_testdata/1, +	 delete_testdata/0, delete_testdata/1, match_delete_testdata/1,  	 set_testdata/1, get_testdata/1, get_testdata/2,  	 set_testdata_async/1, update_testdata/2, update_testdata/3,  	 set_verbosity/1, get_verbosity/1]). @@ -270,6 +270,9 @@ delete_testdata() ->  delete_testdata(Key) ->      call({delete_testdata, Key}). +match_delete_testdata(KeyPat) -> +    call({match_delete_testdata, KeyPat}). +  update_testdata(Key, Fun) ->      update_testdata(Key, Fun, []). @@ -361,7 +364,25 @@ loop(Mode,TestData,StartDir) ->  	{{delete_testdata,Key},From} ->  	    TestData1 = lists:keydelete(Key,1,TestData),  	    return(From,ok), -	    loop(From,TestData1,StartDir);	 +	    loop(From,TestData1,StartDir); +	{{match_delete_testdata,{Key1,Key2}},From} -> +	    %% handles keys with 2 elements +	    TestData1 = +		lists:filter(fun({Key,_}) when not is_tuple(Key) -> +				     true; +				({Key,_}) when tuple_size(Key) =/= 2 -> +				     true; +				({{_,KeyB},_}) when Key1 == '_' -> +				     KeyB =/= Key2;  +				({{KeyA,_},_}) when Key2 == '_' -> +				     KeyA =/= Key1;  +				(_) when Key1 == '_' ; Key2 == '_' -> +				     false; +				(_) -> +				     true +			     end, TestData), +	    return(From,ok), +	    loop(From,TestData1,StartDir);  	{{set_testdata,New = {Key,_Val}},From} ->  	    TestData1 = lists:keydelete(Key,1,TestData),  	    return(From,ok), diff --git a/lib/test_server/src/test_server.erl b/lib/test_server/src/test_server.erl index 9b05bddf63..70dc7a1441 100644 --- a/lib/test_server/src/test_server.erl +++ b/lib/test_server/src/test_server.erl @@ -444,7 +444,7 @@ run_test_case_apply(Mod, Func, Args, Name, RunInit, TimetrapData) ->  %% If this process (group leader of the test case) terminates before  %% all messages have been replied back to the io server, the io server  %% hangs. Fixed by the 20 milli timeout check here, and by using monitor in -%% io.erl (livrem OCH hangslen mao :) +%% io.erl.  %%  %% A test case is known to have failed if it returns {'EXIT', _} tuple,  %% or sends a message {failed, File, Line} to it's group_leader @@ -673,7 +673,7 @@ handle_tc_exit({testcase_aborted,{user_timetrap_error,_}=Msg,_}, St) ->      spawn_fw_call(Mod, Func, Config, Pid, Msg, unknown, self()),      St;  handle_tc_exit(Reason, #st{status={framework,FwMod,FwFunc}, -			  config=Config,pid=Pid}=St) -> +			   config=Config,pid=Pid}=St) ->      R = case Reason of  	    {timetrap_timeout,TVal,_} ->  		{timetrap,TVal}; | 
