diff options
Diffstat (limited to 'inttest/erlc_dep_graph/erlc_dep_graph_rt.erl')
-rw-r--r-- | inttest/erlc_dep_graph/erlc_dep_graph_rt.erl | 30 |
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, _}, |