1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
-module(showtime@internal@erlang@event_handler).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).
-export([start/0]).
-export_type([event_handler_message/0]).
-type event_handler_message() :: {event_handler_message,
showtime@internal@common@test_suite:test_event(),
gleam@erlang@process:subject(integer())}.
-spec system_time() -> integer().
system_time() ->
os:system_time(millisecond).
-spec start() -> fun((showtime@internal@common@test_suite:test_event()) -> nil).
start() ->
_assert_subject = gleam@otp@actor:start(
{not_started, 0, gleam@map:new()},
fun(Msg, State) ->
{event_handler_message, Test_event, Reply_to} = Msg,
{Test_state, Num_done, Events} = State,
Updated_state = showtime@internal@common@common_event_handler:handle_event(
Test_event,
fun system_time/0,
{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 ->
{Test_report, Num_failed} = showtime@internal@reports@formatter:create_test_report(
Events@1
),
gleam@io:println(Test_report),
gleam@erlang@process:send(Reply_to, Num_failed),
{stop, normal};
{handler_state, Test_state@1, Num_done@2, Events@2} ->
{continue, {Test_state@1, Num_done@2, Events@2}, none}
end
end
),
{ok, Subject} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"showtime/internal/erlang/event_handler"/utf8>>,
function => <<"start"/utf8>>,
line => 32})
end,
Parent_subject = gleam@erlang@process:new_subject(),
Selector = begin
_pipe = gleam_erlang_ffi:new_selector(),
gleam@erlang@process:selecting(_pipe, Parent_subject, fun(X) -> X end)
end,
fun(Test_event@1) -> case Test_event@1 of
{end_test_run, _} ->
gleam@erlang@process:send(
Subject,
{event_handler_message, Test_event@1, Parent_subject}
),
Num_failed@1 = gleam_erlang_ffi:select(Selector),
case Num_failed@1 > 0 of
true ->
erlang:halt(1);
false ->
erlang:halt(0)
end;
_ ->
gleam@erlang@process:send(
Subject,
{event_handler_message, Test_event@1, Parent_subject}
)
end end.
|