Current section

Files

Jump to
startest src startest@locator.erl
Raw

src/startest@locator.erl

-module(startest@locator).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([locate_test_files/0, identify_tests/2]).
-spec locate_test_files() -> {ok, list(binary())} | {error, nil}.
locate_test_files() ->
gleam@result:'try'(
begin
_pipe = simplifile:get_files(<<"test"/utf8>>),
gleam@result:nil_error(_pipe)
end,
fun(Test_files) ->
Gleam_test_files = begin
_pipe@1 = Test_files,
gleam@list:filter(
_pipe@1,
fun(Filename) ->
gleam@string:ends_with(Filename, <<".gleam"/utf8>>)
end
)
end,
{ok, Gleam_test_files}
end
).
-spec is_standalone_test(
{binary(), fun(() -> gleam@dynamic:dynamic_())},
startest@context:context()
) -> boolean().
is_standalone_test(Named_fn, Ctx) ->
{Function_name, _} = Named_fn,
_pipe = Function_name,
gleam@regex:check(erlang:element(4, erlang:element(2, Ctx)), _pipe).
-spec is_test_suite(
{binary(), fun(() -> gleam@dynamic:dynamic_())},
startest@context:context()
) -> boolean().
is_test_suite(Named_fn, Ctx) ->
{Function_name, _} = Named_fn,
_pipe = Function_name,
gleam@regex:check(erlang:element(3, erlang:element(2, Ctx)), _pipe).
-spec identify_tests(
list({binary(), fun(() -> gleam@dynamic:dynamic_())}),
startest@context:context()
) -> list(startest@test_tree:test_tree()).
identify_tests(Test_functions, Ctx) ->
{Standalone_tests, Test_functions@1} = begin
_pipe = Test_functions,
gleam@list:partition(
_pipe,
fun(_capture) -> is_standalone_test(_capture, Ctx) end
)
end,
Standalone_tests@1 = begin
_pipe@1 = Standalone_tests,
gleam@list:map(
_pipe@1,
fun(Named_fn) ->
{Function_name, Function} = Named_fn,
Function@1 = begin
_pipe@2 = Function,
_pipe@3 = gleam@dynamic:from(_pipe@2),
gleam@dynamic:unsafe_coerce(_pipe@3)
end,
_pipe@4 = {test, Function_name, Function@1, false},
{test, _pipe@4}
end
)
end,
{Test_suites, _} = begin
_pipe@5 = Test_functions@1,
gleam@list:partition(
_pipe@5,
fun(_capture@1) -> is_test_suite(_capture@1, Ctx) end
)
end,
Test_suites@1 = begin
_pipe@6 = Test_suites,
gleam@list:filter_map(
_pipe@6,
fun(Named_fn@1) ->
{_, Function@2} = Named_fn@1,
Value = Function@2(),
_pipe@7 = startest@test_tree:decode_test_tree(Value),
gleam@result:map_error(
_pipe@7,
fun(Error) ->
startest@logger:error(
erlang:element(3, Ctx),
gleam@string:inspect(Error)
)
end
)
end
)
end,
gleam@list:concat([Test_suites@1, Standalone_tests@1]).