Current section

Files

Jump to
showtime src showtime@erlang@event_handler.erl
Raw

src/showtime@erlang@event_handler.erl

-module(showtime@erlang@event_handler).
-compile(no_auto_import).
-export([start/0]).
-spec start() -> fun((showtime@common@test_suite:test_event()) -> nil).
start() ->
_assert_subject = gleam@otp@actor:start(
{not_started, 0, gleam@map:new()},
fun(Msg, State) ->
{Test_state, Num_done, Events} = State,
Updated_state = showtime@common@common_event_handler:handle_event(
Msg,
{handler_state, Test_state, Num_done, Events}
),
case Updated_state of
{handler_state, {finished, Num_modules}, Num_done@1, Events@1} when Num_done@1 =:= Num_modules ->
gleam@io:println(
showtime@reports@formatter:create_test_report(Events@1)
),
{stop, normal};
{handler_state, Test_state@1, Num_done@2, Events@2} ->
{continue, {Test_state@1, Num_done@2, Events@2}}
end
end
),
{ok, Subject} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"showtime/erlang/event_handler"/utf8>>,
function => <<"start"/utf8>>,
line => 16})
end,
Monitor = gleam@erlang@process:monitor_process(
begin
_pipe = Subject,
gleam@erlang@process:subject_owner(_pipe)
end
),
Exit_subject = begin
_pipe@1 = gleam_erlang_ffi:new_selector(),
gleam@erlang@process:selecting_process_down(
_pipe@1,
Monitor,
fun(_) -> nil end
)
end,
fun(Test_event) -> case Test_event of
{end_test_run, _} ->
gleam@erlang@process:send(Subject, Test_event),
gleam_erlang_ffi:select(Exit_subject);
_ ->
gleam@erlang@process:send(Subject, Test_event)
end end.