src/gleeam_code@test_cmd.erl

-module(gleeam_code@test_cmd).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gleeam_code/test_cmd.gleam").
-export([run/3]).

-file("src/gleeam_code/test_cmd.gleam", 5).
-spec run(binary(), binary(), fun((binary()) -> nil)) -> {ok, nil} |
    {error, binary()}.
run(Base_dir, Target, Print) ->
    gleam@result:'try'(
        gleeam_code@internal@resolver:resolve_module(Base_dir, Target),
        fun(Module_name) ->
            Test_module_str = <<<<"solutions@"/utf8, Module_name/binary>>/binary,
                "@solution_test"/utf8>>,
            Print(<<"Running tests for: "/utf8, Target/binary>>),
            Module_atom = erlang:binary_to_atom(Test_module_str),
            case gleeam_code_test_runner_ffi:run_eunit(Module_atom) of
                {ok, _} ->
                    {ok, nil};

                {error, _} ->
                    {error, <<"Tests failed"/utf8>>}
            end
        end
    ).