-module(startest@test_tree). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([all_tests/1]). -export_type([test_tree/0]). -type test_tree() :: {suite, binary(), list(test_tree())} | {test, startest@test_case:test()}. -spec collect_all_tests( test_tree(), list(binary()), list({binary(), startest@test_case:test()}) ) -> list({binary(), startest@test_case:test()}). collect_all_tests(Tree, Path, Acc) -> case Tree of {suite, Name, Suite} -> _pipe = Suite, gleam@list:flat_map( _pipe, fun(_capture) -> collect_all_tests(_capture, [Name | Path], Acc) end ); {test, Test_case} -> Test_path = begin _pipe@1 = [erlang:element(2, Test_case) | Path], _pipe@2 = gleam@list:reverse(_pipe@1), gleam@string:join(_pipe@2, <<" ❯ "/utf8>>) end, [{Test_path, Test_case} | Acc] end. -spec all_tests(test_tree()) -> list({binary(), startest@test_case:test()}). all_tests(Tree) -> collect_all_tests(Tree, [], []).