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

#! /usr/bin/env escript
% This file is part of Jiffy released under the MIT license.
% See the LICENSE file for more information.
main([]) ->
code:add_pathz("test"),
code:add_pathz("ebin"),
Cases = read_cases(),
etap:plan(length(Cases)),
lists:foreach(fun(Case) -> test(Case) end, Cases),
etap:end_tests().
test({Name, Json, {error, _}=Erl}) ->
etap:is((catch jiffy:decode(Json)), Erl, Name);
test({Name, Json, Erl}) ->
etap:is(jiffy:decode(Json), Erl, Name).
read_cases() ->
CasesPath = filename:join(["test", "cases", "*.json"]),
FileNames = lists:sort(filelib:wildcard(CasesPath)),
lists:map(fun(F) -> make_pair(F) end, FileNames).
make_pair(FileName) ->
{ok, Json} = file:read_file(FileName),
{BaseName, _} = lists:splitwith(fun(C) -> C /= $. end, FileName),
ErlFname = BaseName ++ ".erl",
{ok, [Term]} = file:consult(ErlFname),
{BaseName, Json, Term}.