diff options
Diffstat (limited to 'inttest')
-rw-r--r-- | inttest/thooks/fish.erl | 5 | ||||
-rw-r--r-- | inttest/thooks/rebar.config | 7 | ||||
-rw-r--r-- | inttest/thooks/thooks_rt.erl | 40 |
3 files changed, 52 insertions, 0 deletions
diff --git a/inttest/thooks/fish.erl b/inttest/thooks/fish.erl new file mode 100644 index 0000000..739cb94 --- /dev/null +++ b/inttest/thooks/fish.erl @@ -0,0 +1,5 @@ +-module(fish). + +-compile(export_all). + +fish() -> fish. diff --git a/inttest/thooks/rebar.config b/inttest/thooks/rebar.config new file mode 100644 index 0000000..6514818 --- /dev/null +++ b/inttest/thooks/rebar.config @@ -0,0 +1,7 @@ +%% pre-scripts +{pre_hooks, [{clean, "echo preclean >> preclean.out"}, + {compile, "echo precompile >> precompile.out"}]}. + +%% post-scripts +{post_hooks, [{clean, "echo postclean >> postclean.out"}, + {compile, "echo postcompile >> postcompile.out"}]}. diff --git a/inttest/thooks/thooks_rt.erl b/inttest/thooks/thooks_rt.erl new file mode 100644 index 0000000..52af9f5 --- /dev/null +++ b/inttest/thooks/thooks_rt.erl @@ -0,0 +1,40 @@ +-module(thooks_rt). + +-include_lib("eunit/include/eunit.hrl"). +-compile(export_all). + +files() -> + [ + %% dummy lfe files + {copy, "../../rebar", "rebar"}, + {copy, "rebar.config", "rebar.config"}, + {copy, "fish.erl", "src/fish.erl"}, + {create, "ebin/fish.app", app(fish, [fish])} + ]. + +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), + ?assertEqual(Command ++ "\n", binary_to_list(Content)). + +%% +%% 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]). |