rebar3/test/rebar_templater_SUITE.erl

64 lines
2.0 KiB
Erlang

%% coding:utf-8
-module(rebar_templater_SUITE).
-compile(export_all).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
all() ->
[
consult_template_latin1_test,
consult_template_utf8_test
].
init_per_suite(Config) -> Config.
end_per_suite(_Config) -> ok.
init_per_testcase(Case, Config)
when Case =:= consult_template_latin1_test;
Case =:= consult_template_utf8_test ->
%% Generate UCS string containing all printable characters of latin-1 area.
Description = lists:seq(16#A1, 16#AC) ++ lists:seq(16#AE, 16#FE),
Expected = [{description, Description}],
SampleTemplate = "{description, \"" ++ Description ++ "\"}.\n",
Path = generate_sample_template_file(Case, SampleTemplate, Config),
[{template_file_path, Path}, {expected, Expected} | Config];
init_per_testcase(_Case, Config) -> Config.
end_per_testcase(_Case, _Config) -> ok.
generate_sample_template_file(Case, Content, Config) ->
CaseName = atom_to_list(Case),
{Encoding, EncodingName} =
case string:str(CaseName, "latin1") of
0 -> {utf8, "utf-8"};
_ -> {latin1, "latin-1"}
end,
PrivDir = ?config(priv_dir, Config),
Path = filename:join([PrivDir, CaseName ++ ".template"]),
{ok, FH} = file:open(Path, [write, {encoding, Encoding}]),
try
io:format(FH, "%% coding:~s~n~s", [EncodingName, Content])
after
file:close(FH)
end,
Path.
consult_template_test_common(Config) ->
Expected = ?config(expected, Config),
Path = ?config(template_file_path, Config),
Result = rebar_templater:consult_template([], file, Path),
?assertEqual(Expected, Result),
ok.
consult_template_latin1_test() ->
[{doc, "parse test for latin1 template file"}].
consult_template_latin1_test(Config) ->
consult_template_test_common(Config).
consult_template_utf8_test() ->
[{doc, "parse test for utf8 template file"}].
consult_template_utf8_test(Config) ->
consult_template_test_common(Config).