85 lines
1.9 KiB
Plaintext
85 lines
1.9 KiB
Plaintext
|
|
do(["test"]) ->
|
|
do_tests();
|
|
do(["test" | Tests]) ->
|
|
do_tests(Tests);
|
|
do(["tests"]) ->
|
|
do_tests();
|
|
|
|
do_runall_tests() ->
|
|
lists:foreach(fun run_mod_main/1, test_mods()).
|
|
|
|
|
|
do_tests(List) ->
|
|
lists:foreach(fun run_test/1, List).
|
|
|
|
% n
|
|
run_test(TestName) ->
|
|
% we have two candidate atoms
|
|
C1 = list_to_atom(TestName),
|
|
C2 = list_to_atom("gsc_test_" ++ TestName),
|
|
KnownMods = test_mods(),
|
|
IsC1 = lists:member(C1, KnownMods),
|
|
IsC2 = lists:member(C2, KnownMods),
|
|
if
|
|
IsC1 -> rmm(C1);
|
|
IsC2 -> rmm(C2);
|
|
true -> error({no_such_test, TestName})
|
|
end.
|
|
|
|
|
|
rmm(X) -> run_mod_main(X).
|
|
|
|
% KnownTests = test_mods(),
|
|
% TestMods = ensure_all_known([], List, KnownTests),
|
|
% lists:foreach(fun run_mod_main/1, TestMods).
|
|
|
|
|
|
%ensure_all_known(Acc, [], _) ->
|
|
% lists:sort(Acc);
|
|
%ensure_all_known(Acc, [T | Ts], Knowns) ->
|
|
% case lists:member(T, Knowns) of
|
|
%
|
|
% end.
|
|
|
|
|
|
test_mods() ->
|
|
known_modules_with_prefix("gsc_test").
|
|
|
|
known_modules_with_prefix(Pfx) ->
|
|
ModsZipBeamsZipLoaded = code:all_available(),
|
|
kmp(Pfx, ModsZipBeamsZipLoaded, []).
|
|
|
|
kmp(_Pfx, [], Acc) ->
|
|
lists:sort(Acc);
|
|
kmp(Pfx, [{ModStr, _BeamPath, _Loaded} | Rest], Acc) ->
|
|
case lists:prefix(Pfx, ModStr) of
|
|
false -> kmp(Pfx, Rest, Acc);
|
|
true -> kmp(Pfx, Rest, [list_to_atom(ModStr) | Acc])
|
|
end.
|
|
|
|
run_mod_main(Mod) ->
|
|
io:format("========================================\n"
|
|
"~p:main()\n"
|
|
"========================================\n",
|
|
[Mod]),
|
|
try
|
|
Mod:main()
|
|
catch
|
|
Err:ErrType:Trace ->
|
|
io:format("~p: ~p~n", [Err, ErrType]),
|
|
io:format("Trace:~n~p~n", [Trace])
|
|
end.
|
|
|
|
do_tlist() ->
|
|
lists:foreach(
|
|
fun(ModName) ->
|
|
io:format("~s~n", [ModName])
|
|
end,
|
|
test_mods()
|
|
).
|
|
|
|
|
|
tokenizers_agree(File) ->
|
|
gso_tokens(File) =:= so_tokens(File).
|