summaryrefslogtreecommitdiff
path: root/inttest
diff options
context:
space:
mode:
authorDavid Kubecka <davidkubecka@seznam.cz>2015-03-25 09:57:42 +0100
committerDavid Kubecka <davidkubecka@seznam.cz>2015-04-06 22:10:15 +0200
commit462962ebab154362ac87445550b9590f6f5840ce (patch)
tree8610333bc402f1b07873b8c81ac8e5769967cc16 /inttest
parent13fe77d3f5a5e0fb4521d2fbab3280b6d864e82a (diff)
downloadrebar-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.erl19
-rw-r--r--inttest/erlc_dep_graph/src/java.erl.no_extra10
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.