%% 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).