aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl
blob: a6959f56a622f7c4708539245b841ab70708d019 (plain)
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
-module(showtime@internal@erlang@module_handler).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).

-export([start/5]).

-spec start(
    fun((showtime@internal@common@test_suite:test_event()) -> nil),
    fun((showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite()),
    fun((showtime@internal@common@test_suite:test_suite(), fun((showtime@internal@common@test_suite:test_event()) -> nil), list(binary()), showtime@internal@common@cli:capture()) -> nil),
    list(binary()),
    showtime@internal@common@cli:capture()
) -> fun((showtime@internal@common@test_suite:test_module()) -> nil).
start(
    Test_event_handler,
    Test_function_collector,
    Run_test_suite,
    Ignore_tags,
    Capture
) ->
    _assert_subject = gleam@otp@actor:start(
        nil,
        fun(Module, State) ->
            gleam@erlang@process:start(
                fun() ->
                    Test_suite = Test_function_collector(Module),
                    Test_event_handler({start_test_suite, Module}),
                    Run_test_suite(
                        Test_suite,
                        Test_event_handler,
                        Ignore_tags,
                        Capture
                    ),
                    Test_event_handler({end_test_suite, Module})
                end,
                false
            ),
            {continue, State, none}
        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/module_handler"/utf8>>,
                        function => <<"start"/utf8>>,
                        line => 23})
    end,
    fun(Test_module) ->
        gleam@erlang@process:send(Subject, Test_module),
        nil
    end.