summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2014-09-01 12:38:02 -0500
committerTristan Sloughter <t@crashfast.com>2014-09-01 12:38:02 -0500
commitb8785e654189f8d41636337c1b8a5c7a6bde22ef (patch)
tree7d856dcc191ebc5ab197d060f132f21366638581 /test
parent3ff5e0c06f459a7e16a6413fee6b0eb7a4587259 (diff)
add first test
Diffstat (limited to 'test')
-rw-r--r--test/rebar_install_deps_SUITE.erl113
1 files changed, 113 insertions, 0 deletions
diff --git a/test/rebar_install_deps_SUITE.erl b/test/rebar_install_deps_SUITE.erl
new file mode 100644
index 0000000..6b2b3bf
--- /dev/null
+++ b/test/rebar_install_deps_SUITE.erl
@@ -0,0 +1,113 @@
+-module(rebar_install_deps_SUITE).
+
+-export([suite/0,
+ init_per_suite/1,
+ end_per_suite/1,
+ init_per_testcase/2,
+ all/0,
+ build_basic_app/1]).
+
+-include_lib("common_test/include/ct.hrl").
+-include_lib("eunit/include/eunit.hrl").
+-include_lib("kernel/include/file.hrl").
+-include_lib("kernel/include/file.hrl").
+
+suite() ->
+ [].
+
+init_per_suite(Config) ->
+ Config.
+
+end_per_suite(_Config) ->
+ ok.
+
+init_per_testcase(_, Config) ->
+ DataDir = proplists:get_value(data_dir, Config),
+ AppsDir = filename:join([DataDir, create_random_name("apps_dir1_")]),
+ ok = ec_file:mkdir_p(AppsDir),
+ Verbosity = rebar:log_level([]),
+ rebar_log:init(command_line, Verbosity),
+ State = rebar_state:new(),
+ [{apps, AppsDir}, {state, State} | Config].
+
+all() ->
+ [built_basic_app].
+
+build_basic_app(Config) ->
+ AppDir = proplists:get_value(apps, Config),
+ State = proplists:get_value(state, Config),
+
+ Name = create_random_name("app1_"),
+ Vsn = create_random_vsn(),
+ create_app(AppDir, Name, Vsn, [kernel, stdlib]),
+
+ ConfigFile = filename:join([AppDir, "rebar.config"]),
+ write_config(ConfigFile, []),
+ rebar:run(rebar_state:new(State, [], AppDir), ["compile"]),
+
+ %% Verify app was built
+ [App] = rebar_app_discover:find_apps([AppDir]),
+
+ ?assertEqual(Name, ec_cnv:to_list(rebar_app_info:name(App))).
+
+%%%===================================================================
+%%% Helper Functions
+%%%===================================================================
+
+create_app(AppDir, Name, Vsn, Deps) ->
+ write_src_file(AppDir, Name),
+ write_app_src_file(AppDir, Name, Vsn, Deps),
+ rebar_app_info:new(Name, Vsn, AppDir, Deps).
+
+create_empty_app(AppDir, Name, Vsn, Deps) ->
+ write_app_file(AppDir, Name, Vsn, Deps),
+ rebar_app_info:new(Name, Vsn, AppDir, Deps).
+
+write_beam_file(Dir, Name) ->
+ Beam = filename:join([Dir, "ebin", "not_a_real_beam" ++ Name ++ ".beam"]),
+ ok = filelib:ensure_dir(Beam),
+ ok = ec_file:write_term(Beam, testing_purposes_only).
+
+write_src_file(Dir, Name) ->
+ Erl = filename:join([Dir, "src", "not_a_real_src" ++ Name ++ ".erl"]),
+ ok = filelib:ensure_dir(Erl),
+ ok = ec_file:write(Erl, erl_src_file("not_a_real_src" ++ Name ++ ".erl")).
+
+write_app_file(Dir, Name, Version, Deps) ->
+ Filename = filename:join([Dir, "ebin", Name ++ ".app"]),
+ ok = filelib:ensure_dir(Filename),
+ ok = ec_file:write_term(Filename, get_app_metadata(ec_cnv:to_list(Name), Version, Deps)).
+
+write_app_src_file(Dir, Name, Version, Deps) ->
+ Filename = filename:join([Dir, "src", Name ++ ".app.src"]),
+ ok = filelib:ensure_dir(Filename),
+ ok = ec_file:write_term(Filename, get_app_metadata(ec_cnv:to_list(Name), Version, Deps)).
+
+get_app_metadata(Name, Vsn, Deps) ->
+ {application, erlang:list_to_atom(Name),
+ [{description, ""},
+ {vsn, Vsn},
+ {modules, []},
+ {included_applications, []},
+ {registered, []},
+ {applications, Deps}]}.
+
+create_random_name(Name) ->
+ random:seed(erlang:now()),
+ Name ++ erlang:integer_to_list(random:uniform(1000000)).
+
+create_random_vsn() ->
+ random:seed(erlang:now()),
+ lists:flatten([erlang:integer_to_list(random:uniform(100)),
+ ".", erlang:integer_to_list(random:uniform(100)),
+ ".", erlang:integer_to_list(random:uniform(100))]).
+
+write_config(Filename, Values) ->
+ ok = filelib:ensure_dir(Filename),
+ ok = ec_file:write(Filename,
+ [io_lib:format("~p.\n", [Val]) || Val <- Values]).
+
+erl_src_file(Name) ->
+ io_lib:format("-module(~s).\n"
+ "-export([main/0]).\n"
+ "main() -> ok.\n", [filename:basename(Name, ".erl")]).