Current section

Files

Jump to
startest src startest@runner.erl
Raw

src/startest@runner.erl

-module(startest@runner).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([run_tests/2]).
-spec run_test(startest@test_case:test()) -> startest@test_case:test_outcome().
run_test(Test_case) ->
case erlang:element(4, Test_case) of
true ->
skipped;
false ->
case startest@test_failure:rescue(erlang:element(3, Test_case)) of
{ok, nil} ->
passed;
{error, Err} ->
{failed, Err}
end
end.
-spec run_tests(
list(startest@test_tree:test_tree()),
list(startest@reporter:reporter())
) -> nil.
run_tests(Tests, Reporters) ->
Tests@1 = begin
_pipe = Tests,
gleam@list:flat_map(
_pipe,
fun(Tree) -> startest@test_tree:all_tests(Tree) end
)
end,
Test_count = gleam@list:length(Tests@1),
gleam@io:println(
<<<<"Running "/utf8, (gleam@int:to_string(Test_count))/binary>>/binary,
" tests"/utf8>>
),
Executed_tests = begin
_pipe@1 = Tests@1,
gleam@list:map(
_pipe@1,
fun(Pair) ->
Test_case = {test,
erlang:element(1, Pair),
erlang:element(3, (erlang:element(2, Pair))),
erlang:element(4, (erlang:element(2, Pair)))},
{executed_test, Test_case, run_test(Test_case)}
end
)
end,
_pipe@2 = Reporters,
gleam@list:each(_pipe@2, fun(Reporter) -> _pipe@3 = Executed_tests,
gleam@list:each(
_pipe@3,
fun(Executed_test) ->
(erlang:element(2, Reporter))(Executed_test)
end
) end),
Has_any_failures = begin
_pipe@4 = Executed_tests,
gleam@list:any(
_pipe@4,
fun(Executed_test@1) ->
startest@test_case:is_failed(Executed_test@1)
end
)
end,
Exit_code = case Has_any_failures of
true ->
1;
false ->
0
end,
erlang:halt(Exit_code).