diff options
author | David Kubecka <davidkubecka@seznam.cz> | 2015-03-25 09:57:42 +0100 |
---|---|---|
committer | David Kubecka <davidkubecka@seznam.cz> | 2015-04-06 22:10:15 +0200 |
commit | 462962ebab154362ac87445550b9590f6f5840ce (patch) | |
tree | 8610333bc402f1b07873b8c81ac8e5769967cc16 /inttest | |
parent | 13fe77d3f5a5e0fb4521d2fbab3280b6d864e82a (diff) | |
download | rebar-462962ebab154362ac87445550b9590f6f5840ce.tar.gz |
Delete existing out-edges before adding new ones in modify_erlcinfo
When the source file changes it could happen that some of its
dependecies get removed. In that case we should remove these
former dependencies from the graph, so that they don't influence
recompilation of the source file anymore.
Diffstat (limited to 'inttest')
-rw-r--r-- | inttest/erlc_dep_graph/erlc_dep_graph_rt.erl | 19 | ||||
-rw-r--r-- | inttest/erlc_dep_graph/src/java.erl.no_extra | 10 |
2 files changed, 26 insertions, 3 deletions
diff --git a/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl b/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl index ee3907e..fb128c6 100644 --- a/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl +++ b/inttest/erlc_dep_graph/erlc_dep_graph_rt.erl @@ -40,7 +40,7 @@ files() -> run(_Dir) -> compile_all(ok, ""), check_beams_ok(), - check_beams_untouched(), + check_beams_untouched(filelib:wildcard("ebin/*.beam")), modify_and_recompile_ok("src/lisp.erl", "ebin/lisp.beam"), clean_all_ok(), @@ -48,14 +48,27 @@ run(_Dir) -> compile_all(ok, ""), modify_and_recompile_ok("extra_include/extra.hrl", "ebin/java.beam"), + 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]), + compile_all(ok, ""), + %% Modify that header file + touch(["extra_include/extra.hrl"]), + %% Ensure we don't have to recompile anything + check_beams_untouched(["ebin/java.beam"]), + %% Clean up + ok = file:write_file(Java, OrigContent), + ok. check_beams_ok() -> F = fun(BeamFile) -> ?assert(filelib:is_regular(BeamFile)) end, with_erl_beams(F). -check_beams_untouched() -> - Beams = filelib:wildcard("ebin/*.beam"), +check_beams_untouched(Beams) -> compile_all_and_assert_mtimes(Beams, fun erlang:'=:='/2). modify_and_recompile_ok(TouchFile, CheckFile) -> diff --git a/inttest/erlc_dep_graph/src/java.erl.no_extra b/inttest/erlc_dep_graph/src/java.erl.no_extra new file mode 100644 index 0000000..7a8fc04 --- /dev/null +++ b/inttest/erlc_dep_graph/src/java.erl.no_extra @@ -0,0 +1,10 @@ +%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ts=4 sw=4 ft=erlang et +-module(java). + +-export([factory/0]). + +-include("lambda.hrl"). + +factory() -> + ?FUN. |