diff options
Diffstat (limited to 'inttest/tdeps2/tdeps2_rt.erl')
-rw-r--r-- | inttest/tdeps2/tdeps2_rt.erl | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/inttest/tdeps2/tdeps2_rt.erl b/inttest/tdeps2/tdeps2_rt.erl new file mode 100644 index 0000000..11f9a32 --- /dev/null +++ b/inttest/tdeps2/tdeps2_rt.erl @@ -0,0 +1,57 @@ +-module(tdeps2_rt). + +-compile(export_all). + +%% Exercise transitive dependencies where there are multiple files +%% depending on the same set of deps +%% [A1, A2] -> B -> C ; A1 and A2 includes B.hrl which includes C.hrl + +files() -> + [ + %% A1 application + {create, "apps/a1/ebin/a1.app", app(a1)}, + {copy, "a.rebar.config", "apps/a1/rebar.config"}, + {template, "a.erl", "apps/a1/src/a1.erl", dict:from_list([{module, a1}])}, + + %% A2 application + {create, "apps/a2/ebin/a2.app", app(a2)}, + {copy, "a.rebar.config", "apps/a2/rebar.config"}, + {template, "a.erl", "apps/a2/src/a2.erl", dict:from_list([{module, a2}])}, + + {copy, "root.rebar.config", "rebar.config"}, + {copy, "../../rebar", "rebar"}, + + %% B application + {create, "repo/b/ebin/b.app", app(b)}, + {copy, "b.rebar.config", "repo/b/rebar.config"}, + {copy, "b.hrl", "repo/b/include/b.hrl"}, + + %% C application + {create, "repo/c/ebin/c.app", app(c)}, + {copy, "c.hrl", "repo/c/include/c.hrl"} + ]. + +run(_Dir) -> + %% Initialize the b/c apps as mercurial repos so that dependencies pull + %% properly + HgCmd = "/bin/sh -c \"hg init && hg add && hg commit -m 'Initial commit'\"", + {ok, _} = retest_sh:run(HgCmd, [{dir, "repo/b"}]), + {ok, _} = retest_sh:run(HgCmd, [{dir, "repo/c"}]), + + + {ok, _} = retest_sh:run("./rebar -v get-deps compile", []), + ok. + + + +%% +%% Generate the contents of a simple .app file +%% +app(Name) -> + App = {application, Name, + [{description, atom_to_list(Name)}, + {vsn, "1"}, + {modules, []}, + {registered, []}, + {applications, [kernel, stdlib]}]}, + io_lib:format("~p.\n", [App]). |