summaryrefslogtreecommitdiff
path: root/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl
diff options
context:
space:
mode:
Diffstat (limited to 'inttest/erlc_dep_graph/erlc_dep_graph_rt.erl')
-rw-r--r--inttest/erlc_dep_graph/erlc_dep_graph_rt.erl30
1 files changed, 25 insertions, 5 deletions
diff --git a/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl b/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl
index 384ce87..72c6928 100644
--- a/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl
+++ b/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl
@@ -30,39 +30,57 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
+ [
{copy, "rebar.config", "rebar.config"},
{copy, "src", "src"},
{copy, "include", "include"},
- {copy, "extra_include", "extra_include"}].
+ {copy, "extra_include", "extra_include"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
+ retest_log:log(debug, "compiling all...\n\n", []),
compile_all(ok, ""),
+ retest_log:log(debug, "checking beams integrity...\n\n", []),
check_beams_ok(),
check_beams_untouched(filelib:wildcard("ebin/*.beam")),
+ retest_log:log(debug, "modifying lisp.erl and recompiling...\n\n", []),
modify_and_recompile_ok("src/lisp.erl", "ebin/lisp.beam"),
+ retest_log:log(debug, "cleaning all...\n\n", []),
clean_all_ok(),
+ retest_log:log(debug, "compiling all (expect fail)...\n\n", []),
compile_all(error, "-C rebar.config.non-existing"),
+ retest_log:log(debug, "compiling all...\n\n", []),
compile_all(ok, ""),
+ retest_log:log(debug, "modifying extra_include/extra.hrl and recompiling...\n\n", []),
modify_and_recompile_ok("extra_include/extra.hrl", "ebin/java.beam"),
+ retest_log:log(debug, "rewriting src/java.erl...\n\n", []),
Java = "src/java.erl",
{ok, OrigContent} = file:read_file(Java),
%% Remove header file inclusion
{ok, _} = file:copy("src/java.erl.no_extra", Java),
%% Ensure recompilation
touch([Java]),
+ retest_log:log(debug, "compiling all...\n\n", []),
compile_all(ok, ""),
%% Modify that header file
+ retest_log:log(debug, "again modifying extra_include/extra.hrl and recompiling...\n\n", []),
touch(["extra_include/extra.hrl"]),
%% Ensure we don't have to recompile anything
+ retest_log:log(debug, "ensure ebin/java.beam was untouched...\n\n", []),
check_beams_untouched(["ebin/java.beam"]),
%% Clean up
+ retest_log:log(debug, "modifying src/java.erl...\n\n", []),
ok = file:write_file(Java, OrigContent),
%% Check that changes propagate deeply through the dependency tree
+ retest_log:log(debug, "modifying include/lambda.hrl...\n\n", []),
modify_and_recompile_ok("include/lambda.hrl", "ebin/perl.beam"),
ok.
@@ -82,7 +100,9 @@ compile_all_and_assert_mtimes(Beams, Cmp) ->
BeamsModifiedBefore = mtime_ns(Beams),
compile_all(ok, ""),
BeamsModifiedAfter = mtime_ns(Beams),
- lists:zipwith(fun(Before, After) -> ?assert(Cmp(Before, After)) end,
+ lists:zipwith(fun(Before, After) ->
+ ?assert(Cmp(Before, After))
+ end,
BeamsModifiedBefore, BeamsModifiedAfter).
with_erl_beams(F) ->
@@ -95,13 +115,13 @@ with_erl_beams(F) ->
filelib:wildcard("src/*.erl")).
mtime_ns(Files) ->
- [os:cmd("stat -c%y " ++ File) || File <- Files].
+ [calendar:datetime_to_gregorian_seconds(filelib:last_modified(File)) || File <- Files].
touch(Files) ->
%% Sleep one second so that filelib:last_modified/1 is guaranteed to notice
%% that files have changed.
ok = timer:sleep(1000),
- [os:cmd("touch " ++ File) || File <- Files].
+ [file:change_time(File, calendar:local_time()) || File <- Files].
compile_all(Result, Opts) ->
?assertMatch({Result, _},