diff options
| author | Peter Andersson <[email protected]> | 2014-04-30 00:25:42 +0200 | 
|---|---|---|
| committer | Peter Andersson <[email protected]> | 2014-04-30 00:25:42 +0200 | 
| commit | af8a352109ba87f7960ab46bd6ed1d237b87ed7c (patch) | |
| tree | 8fed4dc185fb67a922ae81650f9cd08011ce2a3a /lib/common_test/src | |
| parent | aca0b6182b039333b4c963938878d9eecc85e5a1 (diff) | |
| download | otp-af8a352109ba87f7960ab46bd6ed1d237b87ed7c.tar.gz otp-af8a352109ba87f7960ab46bd6ed1d237b87ed7c.tar.bz2 otp-af8a352109ba87f7960ab46bd6ed1d237b87ed7c.zip  | |
Fix problem with comments getting lost when running parallel test cases
OTP-11898
Diffstat (limited to 'lib/common_test/src')
| -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 | 
3 files changed, 37 insertions, 5 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),  | 
