diff options
author | Dan Gudmundsson <dgud@erlang.org> | 2022-02-10 10:36:33 +0100 |
---|---|---|
committer | Dan Gudmundsson <dgud@erlang.org> | 2022-02-10 10:36:33 +0100 |
commit | fbc5b5c9dd039c5ee49d777eea5a17e7ab2ad790 (patch) | |
tree | 3ca694600da6badc855937ece69dac890adc9bc8 /lib/wx | |
parent | 993280a833b9e354ec60c791e86501e5b864773a (diff) | |
download | erlang-fbc5b5c9dd039c5ee49d777eea5a17e7ab2ad790.tar.gz |
wx: Test cuddling
Filter out (late or random) sync messages when they are not
interesting, test failed occasionally.
Diffstat (limited to 'lib/wx')
-rw-r--r-- | lib/wx/test/wx_basic_SUITE.erl | 24 | ||||
-rw-r--r-- | lib/wx/test/wxt.erl | 2 |
2 files changed, 17 insertions, 9 deletions
diff --git a/lib/wx/test/wx_basic_SUITE.erl b/lib/wx/test/wx_basic_SUITE.erl index de86a8362b..0bbd35ae39 100644 --- a/lib/wx/test/wx_basic_SUITE.erl +++ b/lib/wx/test/wx_basic_SUITE.erl @@ -368,7 +368,7 @@ data_types(_Config) -> wx:destroy(). enums(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); -enums(Config) -> +enums(_Config) -> %% Test that all needed enums are available and have not changed value wx_test_enums:test(). @@ -395,7 +395,7 @@ wx_object(Config) -> Me = self(), ?m({call, foobar, {Me, _}}, wx_object:call(Frame, foobar)), ?m(ok, wx_object:cast(Frame, foobar2)), - ?m([{cast, foobar2}|_], flush()), + ?m([{cast, foobar2}|_], flush(true)), ?m(Frame, wx_obj_test:who_are_you(Frame)), {call, {Frame,Panel}, _} = wx_object:call(Frame, fun(US) -> US end), @@ -406,17 +406,17 @@ wx_object(Config) -> timeout = wx_object:wait_response(ReqId, 0), {reply, {call, yes1, {Me,_}}} = wx_object:wait_response(ReqId, 1000), ReqId2 = wx_object:send_request(Frame, yes2), - [Msg] = flush(), + [Msg] = flush(true), no_reply = wx_object:check_response(Msg, ReqId), {reply, {call, yes2, {Me,_}}} = wx_object:check_response(Msg, ReqId2), FramePid = wx_object:get_pid(Frame), io:format("wx_object pid ~p~n",[FramePid]), FramePid ! foo3, - ?m([{info, foo3}], flush()), + ?m([{info, foo3}], flush(true)), ?m(ok, wx_object:cast(Frame, fun(_) -> hehe end)), - ?m([{cast, hehe}|_], flush()), + ?m([{cast, hehe}|_], flush(true)), wxWindow:refresh(Frame), ?m([{sync_event, #wx{event=#wxPaint{}}, _}|_], flush()), ?m(ok, wx_object:cast(Frame, fun(_) -> timer:sleep(500), slept end)), @@ -441,7 +441,7 @@ wx_object(Config) -> end, ?m(ok, receive {'DOWN', Monitor, _, _, _} -> - ?m([{terminate, wx_deleted}], flush()), + ?m([{terminate, wx_deleted}], flush(true)), ok after 1000 -> Msgs = flush(), @@ -613,11 +613,17 @@ check_events([], Async, Sync) -> end. flush() -> - flush([], 1500). + flush([], false, 1500). -flush(Acc, Wait) -> +flush(FilterSync) -> + flush([], FilterSync, 1500). + +flush(Acc, FilterSync, Wait) -> receive - Msg -> flush([Msg|Acc], Wait div 10) + {sync_event, _} when FilterSync -> + flush(Acc, FilterSync, Wait); + Msg -> + flush([Msg|Acc], FilterSync, Wait div 10) after Wait -> lists:reverse(Acc) end. diff --git a/lib/wx/test/wxt.erl b/lib/wx/test/wxt.erl index 280443404f..21cd9d7a94 100644 --- a/lib/wx/test/wxt.erl +++ b/lib/wx/test/wxt.erl @@ -22,6 +22,8 @@ -module(wxt). -export([t/0, t/1, t/2, user/0, user/1,user/2]). +-compile({no_auto_import,[alias/1]}). + %% Modules or suites can be shortcuts i.e. basic expands to wx_basic_SUITE. %% %% t(Tests) run wx testcases. |