-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]).