| %% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*- |
| %% ex: ts=4 sw=4 et |
| -module(thooks_rt). |
| |
| -include_lib("eunit/include/eunit.hrl"). |
| -export([setup/1, files/0, run/1]). |
| |
| setup([Target]) -> |
| retest_utils:load_module(filename:join(Target, "inttest_utils.erl")), |
| ok. |
| |
| files() -> |
| [ |
| %% dummy lfe files |
| {copy, "rebar.config", "rebar.config"}, |
| {copy, "fish.erl", "src/fish.erl"}, |
| {create, "ebin/fish.app", app(fish, [fish])} |
| ] ++ inttest_utils:rebar_setup(). |
| |
| run(_Dir) -> |
| ?assertMatch({ok, _}, retest_sh:run("./rebar -v clean compile", [])), |
| ensure_command_ran_only_once("preclean"), |
| ensure_command_ran_only_once("precompile"), |
| ensure_command_ran_only_once("postclean"), |
| ensure_command_ran_only_once("postcompile"), |
| ok. |
| |
| ensure_command_ran_only_once(Command) -> |
| File = Command ++ ".out", |
| ?assert(filelib:is_regular(File)), |
| %% ensure that this command only ran once (not for each module) |
| {ok, Content} = file:read_file(File), |
| %% echo behaves differently in windows and unix |
| case os:type() of |
| {win32, nt} -> |
| ?assertEqual(Command ++ " \r\n", binary_to_list(Content)); |
| _ -> |
| ?assertEqual(Command ++ "\n", binary_to_list(Content)) |
| end. |
| |
| %% |
| %% Generate the contents of a simple .app file |
| %% |
| app(Name, Modules) -> |
| App = {application, Name, |
| [{description, atom_to_list(Name)}, |
| {vsn, "1"}, |
| {modules, Modules}, |
| {registered, []}, |
| {applications, [kernel, stdlib]}]}, |
| io_lib:format("~p.\n", [App]). |