#! /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}.
|