summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorYury Gargay <yury.gargay@gmail.com>2016-02-13 15:37:16 +0600
committerYury Gargay <yury.gargay@gmail.com>2016-02-13 21:51:27 +0600
commit4bc4054abaff9c3445efd5f87f09eae1aefd43b1 (patch)
treead02fd34c28619505fbeac1906b8226c0413bba2 /test
parent21f30d3abde6b762e0045687ed0e74682ee2d069 (diff)
downloadrebar-4bc4054abaff9c3445efd5f87f09eae1aefd43b1.tar.gz
Add tests for dia compiler
Test will be runed only on OTP >= 15
Diffstat (limited to 'test')
-rw-r--r--test/rebar_dia_tests.erl116
1 files changed, 116 insertions, 0 deletions
diff --git a/test/rebar_dia_tests.erl b/test/rebar_dia_tests.erl
new file mode 100644
index 0000000..556a552
--- /dev/null
+++ b/test/rebar_dia_tests.erl
@@ -0,0 +1,116 @@
+%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
+%% ex: ts=4 sw=4 et
+-module(rebar_dia_tests).
+
+-compile([export_all]).
+
+-include_lib("eunit/include/eunit.hrl").
+
+-define(REBAR_SCRIPT, "../rebar").
+
+-define(TMP_DIR, "dia_project/").
+
+dia_test_() ->
+ case supported_otp_version() of
+ true ->
+ {"Test the dia compiler",
+ setup, fun() -> setup_project(), rebar("compile") end,
+ fun teardown/1,
+ fun(RebarOut) ->
+ [{"Check ebin is created",
+ ?_assert(filelib:is_dir("ebin") =:= true)},
+
+ {"Check include is created",
+ ?_assert(filelib:is_dir("include") =:= true)},
+
+ {"Check dia/a.dia is compiled",
+ ?_assert(string:str(RebarOut, "Compiled dia/a.dia") /= 0)},
+
+ {"Check dia/b.dia is compiled",
+ ?_assert(string:str(RebarOut, "Compiled dia/b.dia") /= 0)}
+ ]
+ end};
+ false -> {setup, fun() -> ok end, []}
+ end.
+
+
+%% ====================================================================
+%% Setup and Teardown
+%% ====================================================================
+
+-define(myapp_dia_a,
+ ["@id 0\n",
+ "@name a\n",
+ "@vendor 1 ABC\n",
+ "@avp_types\n",
+ " IMSI 1 UTF8String V"
+ ]).
+
+-define(myapp_dia_b,
+ ["@id 2\n",
+ "@name b\n",
+ "@vendor 2 ABC\n",
+ "@inherits a\n",
+ "@avp_types\n",
+ " IMEIV 900 OctetString MV"
+ ]).
+
+-define(myapp_rebarconfig,
+ ["{dia_first_files, [\"dia/a.dia\"]}.\n",
+ "{dia_opts, []}.\n"
+ ]).
+
+supported_otp_version() ->
+ Min = rebar_require_vsn:version_tuple(keep_going, "15", "configured"),
+ Otp = rebar_require_vsn:version_tuple(keep_going,
+ erlang:system_info(otp_release),
+ "OTP Release"),
+ Otp >= Min.
+
+
+setup_environment() ->
+ ok = file:make_dir(?TMP_DIR),
+ prepare_rebar_script(),
+ ok = file:set_cwd(?TMP_DIR).
+
+prepare_project() ->
+ setup_environment(),
+ rebar("create-app appid=myapp").
+
+
+setup_project() ->
+ prepare_project(),
+ ok = file:make_dir("dia"),
+ ok = file:write_file("dia/a.dia", ?myapp_dia_a),
+ ok = file:write_file("dia/b.dia", ?myapp_dia_b),
+ ok = file:write_file("rebar.config", ?myapp_rebarconfig).
+
+
+teardown(_) ->
+ ok = file:set_cwd(".."),
+ ok = remove_tmp_dir().
+
+remove_tmp_dir() ->
+ ok = rebar_file_utils:rm_rf(?TMP_DIR).
+
+%% ====================================================================
+%% Helper Functions
+%% ====================================================================
+
+prepare_rebar_script() ->
+ Rebar = ?TMP_DIR ++ "rebar",
+ {ok, _} = file:copy(?REBAR_SCRIPT, Rebar),
+ case os:type() of
+ {unix, _} ->
+ [] = os:cmd("chmod u+x " ++ Rebar);
+ {win32, _} ->
+ {ok, _} = file:copy(?REBAR_SCRIPT ++ ".cmd",
+ ?TMP_DIR ++ "rebar.cmd")
+ end.
+
+rebar() ->
+ rebar([]).
+
+rebar(Args) when is_list(Args) ->
+ Out = os:cmd(filename:nativename("./rebar") ++ " " ++ Args),
+ Out.