-module(showtime@erlang@module_handler). -compile(no_auto_import). -export([start/4]). -spec start( fun((showtime@common@test_suite:test_event()) -> nil), fun((showtime@common@test_suite:test_module()) -> showtime@common@test_suite:test_suite()), fun((showtime@common@test_suite:test_suite(), fun((showtime@common@test_suite:test_event()) -> nil), list(binary())) -> nil), list(binary()) ) -> fun((showtime@common@test_suite:test_module()) -> nil). start(Test_event_handler, Test_function_collector, Run_test_suite, Ignore_tags) -> _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), Test_event_handler({end_test_suite, Module}) end, true ), {continue, State} 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/module_handler"/utf8>>, function => <<"start"/utf8>>, line => 15}) end, fun(Test_module) -> gleam@erlang@process:send(Subject, Test_module), nil end.