You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
932 B

  1. #! /usr/bin/env escript
  2. % This file is part of Jiffy released under the MIT license.
  3. % See the LICENSE file for more information.
  4. main([]) ->
  5. code:add_pathz("test"),
  6. code:add_pathz("ebin"),
  7. Cases = read_cases(),
  8. etap:plan(length(Cases)),
  9. lists:foreach(fun(Case) -> test(Case) end, Cases),
  10. etap:end_tests().
  11. test({Name, Json, {error, _}=Erl}) ->
  12. etap:is((catch jiffy:decode(Json)), Erl, Name);
  13. test({Name, Json, Erl}) ->
  14. etap:is(jiffy:decode(Json), Erl, Name).
  15. read_cases() ->
  16. CasesPath = filename:join(["test", "cases", "*.json"]),
  17. FileNames = lists:sort(filelib:wildcard(CasesPath)),
  18. lists:map(fun(F) -> make_pair(F) end, FileNames).
  19. make_pair(FileName) ->
  20. {ok, Json} = file:read_file(FileName),
  21. {BaseName, _} = lists:splitwith(fun(C) -> C /= $. end, FileName),
  22. ErlFname = BaseName ++ ".erl",
  23. {ok, [Term]} = file:consult(ErlFname),
  24. {BaseName, Json, Term}.