summaryrefslogtreecommitdiff
path: root/inttest
diff options
context:
space:
mode:
authorLuis Rascão <luis.rascao@gmail.com>2015-10-25 16:14:28 +0000
committerLuis Rascão <luis.rascao@gmail.com>2016-01-15 15:03:33 +0000
commit0bf08e4e34469144ae6f3297aae4a38b3bb2bd3c (patch)
tree13c1467bb7f754c25afec85fbb25775e0bc4e2bf /inttest
parent6f07a636d8f309caef7c68e576396ce3328075ea (diff)
downloadrebar-0bf08e4e34469144ae6f3297aae4a38b3bb2bd3c.tar.gz
Add support for Windows integration testing
Use retest feature/rebar-windows-ci branch that adds Windows tests support, test setup callback and additional touch command. For all tests copy rebar and rebar.cmd using retest setup callback. Port OS specific commands used in tests to Erlang (eg. touch, rm, cp, stat..). rebar_ct: do away with grep command line invocation (which doesn't exist in Windows) and use instead plain Erlang parsing. Increase timeout for rgen1 test to 4 minutes, Windows Appveyor can take longer than the previous 2 minutes.
Diffstat (limited to 'inttest')
-rw-r--r--inttest/app_src/app_src_rt.erl9
-rw-r--r--inttest/app_src_script/app_src_script_rt.erl9
-rw-r--r--inttest/app_src_script_2/app_src_script_2_rt.erl9
-rw-r--r--inttest/appup_src/appup_src_rt.erl9
-rw-r--r--inttest/appup_src_2/appup_src_2_rt.erl9
-rw-r--r--inttest/appup_src_2/appup_src_rt_2.erl8
-rw-r--r--inttest/appup_src_script/appup_src_script_rt.erl9
-rw-r--r--inttest/bug_5_rt.erl9
-rw-r--r--inttest/code_path_no_recurse/code_path_no_recurse_rt.erl7
-rw-r--r--inttest/cover/cover_rt.erl11
-rw-r--r--inttest/ct1/ct1_rt.erl12
-rw-r--r--inttest/ct2/ct2_rt.erl10
-rw-r--r--inttest/ct3/ct3_rt.erl12
-rw-r--r--inttest/ct_cover/ct_cover_rt.erl11
-rw-r--r--inttest/depplugins/depplugins_rt.erl7
-rw-r--r--inttest/erlc/erlc_rt.erl7
-rw-r--r--inttest/erlc_dep_graph/erlc_dep_graph_rt.erl30
-rw-r--r--inttest/eunit/eunit_rt.erl11
-rw-r--r--inttest/inttest_utils.erl16
-rw-r--r--inttest/logging/logging_rt.erl7
-rw-r--r--inttest/port/port_rt.erl87
-rw-r--r--inttest/port/rebar.config3
-rw-r--r--inttest/profile/profile_rt.erl8
-rw-r--r--inttest/proto_gpb/proto_gpb_rt.erl14
-rw-r--r--inttest/proto_protobuffs/proto_protobuffs_rt.erl7
-rw-r--r--inttest/require_vsn/require_vsn_rt.erl7
-rw-r--r--inttest/rgen1/retest.config2
-rw-r--r--inttest/rgen1/rgen1_rt.erl9
-rw-r--r--inttest/t_custom_config/t_custom_config_rt.erl9
-rw-r--r--inttest/tdeps1/tdeps1_rt.erl10
-rw-r--r--inttest/tdeps2/tdeps2_rt.erl10
-rw-r--r--inttest/tdeps3/tdeps3_rt.erl10
-rw-r--r--inttest/tdeps_update/tdeps_update_rt.erl75
-rw-r--r--inttest/thooks/thooks_rt.erl15
-rw-r--r--inttest/tplugins/tplugins_rt.erl7
-rw-r--r--inttest/xref_behavior/xref_behavior_rt.erl7
36 files changed, 341 insertions, 151 deletions
diff --git a/inttest/app_src/app_src_rt.erl b/inttest/app_src/app_src_rt.erl
index d71f03e..2b5a87e 100644
--- a/inttest/app_src/app_src_rt.erl
+++ b/inttest/app_src/app_src_rt.erl
@@ -30,9 +30,14 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
- {create, "src/app_src.app.src", app(app_src)}].
+ [
+ {create, "src/app_src.app.src", app(app_src)}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/app_src_script/app_src_script_rt.erl b/inttest/app_src_script/app_src_script_rt.erl
index 4c00ec8..c0de128 100644
--- a/inttest/app_src_script/app_src_script_rt.erl
+++ b/inttest/app_src_script/app_src_script_rt.erl
@@ -30,9 +30,14 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
- {create, "src/app_src_script.app.src.script", app_script(app_src_script)}].
+ [
+ {create, "src/app_src_script.app.src.script", app_script(app_src_script)}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/app_src_script_2/app_src_script_2_rt.erl b/inttest/app_src_script_2/app_src_script_2_rt.erl
index 1bf59d1..613e3f9 100644
--- a/inttest/app_src_script_2/app_src_script_2_rt.erl
+++ b/inttest/app_src_script_2/app_src_script_2_rt.erl
@@ -30,10 +30,15 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
+ [
{create, "src/app_src_script_2.app.src.script", app_script(app_src_script_2)},
- {create, "src/app_src_script_2.app.src", app(app_src_script_2)}].
+ {create, "src/app_src_script_2.app.src", app(app_src_script_2)}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/appup_src/appup_src_rt.erl b/inttest/appup_src/appup_src_rt.erl
index 2ca6788..7530aa4 100644
--- a/inttest/appup_src/appup_src_rt.erl
+++ b/inttest/appup_src/appup_src_rt.erl
@@ -30,9 +30,14 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
- {copy, "src", "src"}].
+ [
+ {copy, "src", "src"}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/appup_src_2/appup_src_2_rt.erl b/inttest/appup_src_2/appup_src_2_rt.erl
index 09d2503..99e6248 100644
--- a/inttest/appup_src_2/appup_src_2_rt.erl
+++ b/inttest/appup_src_2/appup_src_2_rt.erl
@@ -30,9 +30,14 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
- {copy, "src", "src"}].
+ [
+ {copy, "src", "src"}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/appup_src_2/appup_src_rt_2.erl b/inttest/appup_src_2/appup_src_rt_2.erl
index d662183..fff6f62 100644
--- a/inttest/appup_src_2/appup_src_rt_2.erl
+++ b/inttest/appup_src_2/appup_src_rt_2.erl
@@ -30,9 +30,13 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
- {copy, "src", "src"}].
+ [{copy, "src", "src"}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/appup_src_script/appup_src_script_rt.erl b/inttest/appup_src_script/appup_src_script_rt.erl
index c98e54e..1aeb680 100644
--- a/inttest/appup_src_script/appup_src_script_rt.erl
+++ b/inttest/appup_src_script/appup_src_script_rt.erl
@@ -30,9 +30,14 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
- {copy, "src", "src"}].
+ [
+ {copy, "src", "src"}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/bug_5_rt.erl b/inttest/bug_5_rt.erl
index 8894cb5..f198d40 100644
--- a/inttest/bug_5_rt.erl
+++ b/inttest/bug_5_rt.erl
@@ -4,20 +4,21 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
files() ->
[{create, "ebin/a1.app", app(a1)},
{create, "deps/d1/src/d1.app.src", app(d1)},
{create, "rebar.config",
- <<"{deps, [{d1, \"1\", {hg, \"http://example.com\", \"tip\"}}]}.\n">>},
- {copy, "../rebar", "rebar"}].
+ <<"{deps, [{d1, \"1\", {hg, \"http://example.com\", \"tip\"}}]}.\n">>}
+ ] ++ inttest_utils:rebar_setup("..").
run(_Dir) ->
{ok, _} = retest:sh("./rebar compile"),
ok.
-
-
%%
%% Generate the contents of a simple .app file
%%
diff --git a/inttest/code_path_no_recurse/code_path_no_recurse_rt.erl b/inttest/code_path_no_recurse/code_path_no_recurse_rt.erl
index 74d035e..a2ca980 100644
--- a/inttest/code_path_no_recurse/code_path_no_recurse_rt.erl
+++ b/inttest/code_path_no_recurse/code_path_no_recurse_rt.erl
@@ -28,14 +28,17 @@
-export([files/0,
run/1]).
+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, "test", "test"},
{copy, "deps", "deps"}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
retest:log(info, "Compile project~n"),
diff --git a/inttest/cover/cover_rt.erl b/inttest/cover/cover_rt.erl
index a9f3f08..3f5e485 100644
--- a/inttest/cover/cover_rt.erl
+++ b/inttest/cover/cover_rt.erl
@@ -30,13 +30,18 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{create, "ebin/foo.app", app(foo)},
- {copy, "../../rebar","rebar"},
+ [
+ {create, "ebin/foo.app", app(foo)},
{copy, "src", "src"},
{copy,
"rebar-cover_export_json.config",
- "rebar-cover_export_json.config"}].
+ "rebar-cover_export_json.config"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
ifdef_test(),
diff --git a/inttest/ct1/ct1_rt.erl b/inttest/ct1/ct1_rt.erl
index dc83095..03b4ed8 100644
--- a/inttest/ct1/ct1_rt.erl
+++ b/inttest/ct1/ct1_rt.erl
@@ -4,21 +4,23 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
files() ->
- [{create, "ebin/a1.app", app(a1)},
- {copy, "../../rebar", "rebar"},
+ [
+ {create, "ebin/a1.app", app(a1)},
{copy, "rebar.config", "rebar.config"},
{copy, "app.config", "app.config"},
- {copy, "test_SUITE.erl", "itest/test_SUITE.erl"}].
+ {copy, "test_SUITE.erl", "itest/test_SUITE.erl"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
{ok, _} = retest:sh("./rebar compile ct"),
{ok, _} = retest:sh("./rebar compile ct -v"),
ok.
-
-
%%
%% Generate the contents of a simple .app file
%%
diff --git a/inttest/ct2/ct2_rt.erl b/inttest/ct2/ct2_rt.erl
index f9d2b19..b3138d4 100644
--- a/inttest/ct2/ct2_rt.erl
+++ b/inttest/ct2/ct2_rt.erl
@@ -4,13 +4,17 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
files() ->
- [{create, "ebin/foo.app", app(foo)},
- {copy, "../../rebar", "rebar"},
+ [
+ {create, "ebin/foo.app", app(foo)},
{copy, "foo.test.spec", "foo.test.spec"},
{copy, "deps/bar.test.spec", "deps/bar.test.spec"},
- {copy, "foo_SUITE.erl", "test/foo_SUITE.erl"}].
+ {copy, "foo_SUITE.erl", "test/foo_SUITE.erl"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
Ref = retest:sh("./rebar compile ct -vvv", [async]),
diff --git a/inttest/ct3/ct3_rt.erl b/inttest/ct3/ct3_rt.erl
index a87cf21..b5739db 100644
--- a/inttest/ct3/ct3_rt.erl
+++ b/inttest/ct3/ct3_rt.erl
@@ -28,19 +28,23 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
files() ->
- [{create, "ebin/a1.app", app(a1)},
- {copy, "../../rebar", "rebar"},
+ [
+ {create, "ebin/a1.app", app(a1)},
{copy, "rebar.config", "rebar.config"},
{copy, "app.config", "itest/app.config"},
{copy, "test_SUITE.erl", "itest/test_SUITE.erl"},
{copy, "converted"},
- {copy, "unconverted"}].
+ {copy, "unconverted"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
{ok, _} = retest:sh("./rebar compile ct -v",
- [{env, [{"ERL_FLAGS", "-name ct_rt3"}]}]),
+ [{env, [{"ERL_FLAGS", "-name ct_rt3@localhost"}]}]),
ok.
%%
diff --git a/inttest/ct_cover/ct_cover_rt.erl b/inttest/ct_cover/ct_cover_rt.erl
index c7f8776..361d85b 100644
--- a/inttest/ct_cover/ct_cover_rt.erl
+++ b/inttest/ct_cover/ct_cover_rt.erl
@@ -4,14 +4,19 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{create, "ebin/a1.app", app(a1)},
- {copy, "../../rebar", "rebar"},
+ [
+ {create, "ebin/a1.app", app(a1)},
{copy, "rebar.config", "rebar.config"},
{copy, "app.config", "app.config"},
{copy, "cover.spec", "cover.spec"},
{copy, "test_SUITE.erl", "itest/test_SUITE.erl"},
- {copy, "mock", "deps"}].
+ {copy, "mock", "deps"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
{ok, _} = retest:sh("./rebar compile ct"),
diff --git a/inttest/depplugins/depplugins_rt.erl b/inttest/depplugins/depplugins_rt.erl
index 7bcfe86..fc72dec 100644
--- a/inttest/depplugins/depplugins_rt.erl
+++ b/inttest/depplugins/depplugins_rt.erl
@@ -21,9 +21,12 @@
-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, "base_dir_cwd_plugin.erl", "base_dir_cwd_plugin.erl"},
{create, "ebin/fish.app", app(fish, [])},
@@ -38,7 +41,7 @@ files() ->
"deps/testplugin/plugins/testplugin_mod.erl"},
{copy, "dep_cwd_plugin.erl", "deps/testplugin/dep_cwd_plugin.erl"},
{create, "deps/testplugin/ebin/testplugin.app", app(testplugin, [])}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
diff --git a/inttest/erlc/erlc_rt.erl b/inttest/erlc/erlc_rt.erl
index 0c1f25d..3ac5956 100644
--- a/inttest/erlc/erlc_rt.erl
+++ b/inttest/erlc/erlc_rt.erl
@@ -54,9 +54,12 @@
"foo_worker.beam",
"SIMPLE-ASN.beam"]).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
- {copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{copy, "rebar-no_debug_info.config", "rebar-no_debug_info.config"},
{copy, "include", "include"},
@@ -73,7 +76,7 @@ files() ->
%% deps
{create, "deps/foobar/ebin/foobar.app", app(foobar, [foobar])},
{copy, "foobar.erl", "deps/foobar/src/foobar.erl"}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
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, _},
diff --git a/inttest/eunit/eunit_rt.erl b/inttest/eunit/eunit_rt.erl
index 1d71404..bc24b26 100644
--- a/inttest/eunit/eunit_rt.erl
+++ b/inttest/eunit/eunit_rt.erl
@@ -5,14 +5,19 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{create, "ebin/foo.app", app(foo)},
- {copy, "../../rebar", "rebar"},
+ [
+ {create, "ebin/foo.app", app(foo)},
{copy, "src", "src"},
{copy, "eunit_src", "eunit_src"},
{copy,
"rebar-eunit_compile_opts.config",
- "rebar-eunit_compile_opts.config"}].
+ "rebar-eunit_compile_opts.config"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
ifdef_test(),
diff --git a/inttest/inttest_utils.erl b/inttest/inttest_utils.erl
new file mode 100644
index 0000000..d896f4d
--- /dev/null
+++ b/inttest/inttest_utils.erl
@@ -0,0 +1,16 @@
+%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
+%% ex: ts=4 sw=4 et
+-module(inttest_utils).
+
+-compile(export_all).
+
+rebar_setup({win32, nt}, Dir) ->
+ [{copy, filename:join(Dir, "rebar.cmd"), "rebar.cmd"}];
+rebar_setup({_, _}, _) -> [].
+
+rebar_setup(Dir) ->
+ [{copy,
+ filename:join(Dir, "rebar"), "rebar"}] ++ rebar_setup(os:type(), Dir).
+
+rebar_setup() ->
+ rebar_setup("../..").
diff --git a/inttest/logging/logging_rt.erl b/inttest/logging/logging_rt.erl
index 2709a84..f774376 100644
--- a/inttest/logging/logging_rt.erl
+++ b/inttest/logging/logging_rt.erl
@@ -30,11 +30,14 @@
-define(APP_FILE, "ebin/logging.app").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
- {copy, "../../rebar", "rebar"},
{create, ?APP_FILE, app(invalid_name, [])}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
SharedExpected = "==> logging_rt \\(compile\\)",
diff --git a/inttest/port/port_rt.erl b/inttest/port/port_rt.erl
index 90ecbdc..c910e0e 100644
--- a/inttest/port/port_rt.erl
+++ b/inttest/port/port_rt.erl
@@ -31,13 +31,16 @@
-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, "c_src", "c_src"},
{create, "ebin/foo.app", app(foo, [])}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
%% wait a bit for new files to have different timestamps
@@ -45,48 +48,76 @@ run(_Dir) ->
%% test.so is created during first compile
?assertEqual(0, filelib:last_modified("priv/test.so")),
?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
- TestSo1 = filelib:last_modified("priv/test.so"),
+ TestSo1 = filelib:last_modified("priv/test" ++
+ shared_library_file_extension(os:type())),
?assert(TestSo1 > 0),
wait(),
%% nothing happens during second compile
?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
- TestSo2 = filelib:last_modified("priv/test.so"),
- Test1o2 = filelib:last_modified("c_src/test1.o"),
- Test2o2 = filelib:last_modified("c_src/test2.o"),
+ TestSo2 = filelib:last_modified("priv/test" ++
+ shared_library_file_extension(os:type())),
+ Test1o2 = filelib:last_modified("c_src/test1" ++
+ object_file_extension(os:type())),
+ Test2o2 = filelib:last_modified("c_src/test2" ++
+ object_file_extension(os:type())),
?assertEqual(TestSo1, TestSo2),
?assert(TestSo1 >= Test1o2),
?assert(TestSo1 >= Test2o2),
wait(),
%% when test2.c changes, at least test2.o and test.so are rebuilt
- ?assertMatch({ok, _}, retest_sh:run("touch c_src/test2.c", [])),
+ ?assertMatch({ok, _}, retest:run({touch, "c_src/test2.c"}, [{dir, "."}])),
?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
- TestSo3 = filelib:last_modified("priv/test.so"),
- Test2o3 = filelib:last_modified("c_src/test2.o"),
+ TestSo3 = filelib:last_modified("priv/test" ++
+ shared_library_file_extension(os:type())),
+ Test2o3 = filelib:last_modified("c_src/test2" ++
+ object_file_extension(os:type())),
?assert(TestSo3 > TestSo2),
?assert(Test2o3 > TestSo2),
- wait(),
- %% when test2.h changes, at least test2.o and test.so are rebuilt
- ?assertMatch({ok, _}, retest_sh:run("touch c_src/test2.h", [])),
- ?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
- TestSo4 = filelib:last_modified("priv/test.so"),
- Test2o4 = filelib:last_modified("c_src/test2.o"),
- ?assert(TestSo4 > TestSo3),
- ?assert(Test2o4 > TestSo3),
- wait(),
- %% when test1.h changes, everything is rebuilt
- ?assertMatch({ok, _}, retest_sh:run("touch c_src/test1.h", [])),
- ?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
- TestSo5 = filelib:last_modified("priv/test.so"),
- Test1o5 = filelib:last_modified("c_src/test1.o"),
- Test2o5 = filelib:last_modified("c_src/test2.o"),
- ?assert(TestSo5 > TestSo4),
- ?assert(Test1o5 > TestSo4),
- ?assert(Test2o5 > TestSo4),
- ok.
+ %% detecting the a full recompile is needed when changing a .h file is a feature attained
+ %% by using the -MMD gcc flag which sadly is not available in Windows, so this part of the
+ %% test is only executed in Unix
+ case os:type() of
+ {win32, _} -> ok;
+ _ ->
+ wait(),
+ %% when test2.h changes, at least test2.o and test.so are rebuilt
+ ?assertMatch({ok, _},
+ retest:run({touch, "c_src/test2.h"}, [{dir, "."}])),
+ ?assertMatch({ok, _},
+ retest_sh:run("./rebar compile", [])),
+ TestSo4 = filelib:last_modified("priv/test" ++
+ shared_library_file_extension(os:type())),
+ Test2o4 = filelib:last_modified("c_src/test2" ++
+ object_file_extension(os:type())),
+ ?assert(TestSo4 > TestSo3),
+ ?assert(Test2o4 > TestSo3),
+ wait(),
+ %% when test1.h changes, everything is rebuilt
+ ?assertMatch({ok, _},
+ retest:run({touch, "c_src/test1.h"}, [{dir, "."}])),
+ ?assertMatch({ok, _},
+ retest_sh:run("./rebar compile", [])),
+ TestSo5 = filelib:last_modified("priv/test" ++
+ shared_library_file_extension(os:type())),
+ Test1o5 = filelib:last_modified("c_src/test1" ++
+ object_file_extension(os:type())),
+ Test2o5 = filelib:last_modified("c_src/test2" ++
+ object_file_extension(os:type())),
+ ?assert(TestSo5 > TestSo4),
+ ?assert(Test1o5 > TestSo4),
+ ?assert(Test2o5 > TestSo4),
+ ok
+ end.
wait() ->
timer:sleep(1000).
+object_file_extension({win32, nt}) -> ".o";
+object_file_extension(_) -> ".o".
+
+shared_library_file_extension({win32, nt}) -> ".dll";
+shared_library_file_extension(_) -> ".so".
+
%%
%% Generate the contents of a simple .app file
%%
diff --git a/inttest/port/rebar.config b/inttest/port/rebar.config
index a941218..efab1af 100644
--- a/inttest/port/rebar.config
+++ b/inttest/port/rebar.config
@@ -1 +1,2 @@
-{port_specs, [{"priv/test.so", ["c_src/*.c"]}]}.
+{port_specs, [{"win32", "priv/test.dll", ["c_src/*.c"]},
+ {"priv/test.so", ["c_src/*.c"]}]}.
diff --git a/inttest/profile/profile_rt.erl b/inttest/profile/profile_rt.erl
index b128517..b8a9e09 100644
--- a/inttest/profile/profile_rt.erl
+++ b/inttest/profile/profile_rt.erl
@@ -30,10 +30,12 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [
- {copy, "../../rebar", "rebar"}
- ].
+ inttest_utils:rebar_setup().
run(_Dir) ->
Cmd = "./rebar list-deps",
diff --git a/inttest/proto_gpb/proto_gpb_rt.erl b/inttest/proto_gpb/proto_gpb_rt.erl
index 8a7cacf..307aca0 100644
--- a/inttest/proto_gpb/proto_gpb_rt.erl
+++ b/inttest/proto_gpb/proto_gpb_rt.erl
@@ -30,7 +30,6 @@
-include_lib("eunit/include/eunit.hrl").
-include_lib("kernel/include/file.hrl").
--include_lib("deps/retest/include/retest.hrl").
-define(MODULES,
[foo,
@@ -51,9 +50,12 @@
"c/test4.proto",
"c/d/test5.proto"]).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
- {copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{copy, "rebar2.config", "rebar2.config"},
{copy, "rebar.bad.config", "rebar.bad.config"},
@@ -63,7 +65,7 @@ files() ->
{copy, "proto.bad", "proto.bad"},
{copy, "mock", "deps"},
{create, "ebin/foo.app", app(foo, ?MODULES ++ ?GENERATED_MODULES)}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
% perform test obtaining the .proto files from src dir
@@ -99,7 +101,7 @@ run_from_dir(success_expected, ProtoDir, ConfigFile) ->
%% the .hrl file was generated before foo was compiled.
ok = check_beams_generated(),
- ?DEBUG("Verifying recompilation~n", []),
+ retest_log:log(debug, "Verifying recompilation~n", []),
TestErl = hd(generated_erl_files()),
TestProto = hd(source_proto_files(ProtoDir)),
make_proto_newer_than_erl(TestProto, TestErl),
@@ -111,7 +113,7 @@ run_from_dir(success_expected, ProtoDir, ConfigFile) ->
TestMTime2 = read_mtime(TestErl),
?assert(TestMTime2 > TestMTime1),
- ?DEBUG("Verifying recompilation with no changes~n", []),
+ retest_log:log(debug, "Verifying recompilation with no changes~n", []),
TestMTime3 = read_mtime(TestErl),
?assertMatch({ok, _}, retest_sh:run("./rebar --config "
++ ConfigFile
@@ -120,7 +122,7 @@ run_from_dir(success_expected, ProtoDir, ConfigFile) ->
TestMTime4 = read_mtime(TestErl),
?assert(TestMTime3 =:= TestMTime4),
- ?DEBUG("Verify cleanup~n", []),
+ retest_log:log(debug, "Verify cleanup~n", []),
?assertMatch({ok, _}, retest_sh:run("./rebar --config "
++ ConfigFile
++ " clean",
diff --git a/inttest/proto_protobuffs/proto_protobuffs_rt.erl b/inttest/proto_protobuffs/proto_protobuffs_rt.erl
index 1bb7b5e..ee4c294 100644
--- a/inttest/proto_protobuffs/proto_protobuffs_rt.erl
+++ b/inttest/proto_protobuffs/proto_protobuffs_rt.erl
@@ -42,15 +42,18 @@
"foo_sup.beam",
"test_pb.beam"]).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
- {copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{copy, "include", "include"},
{copy, "src", "src"},
{copy, "mock", "deps"},
{create, "ebin/foo.app", app(foo, ?MODULES)}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
?assertMatch({ok, _}, retest_sh:run("./rebar clean", [])),
diff --git a/inttest/require_vsn/require_vsn_rt.erl b/inttest/require_vsn/require_vsn_rt.erl
index 0b947c5..8ff87f7 100644
--- a/inttest/require_vsn/require_vsn_rt.erl
+++ b/inttest/require_vsn/require_vsn_rt.erl
@@ -28,12 +28,15 @@
-export([files/0,
run/1]).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
- {copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{create, "ebin/require_vsn.app", app(require_vsn, [])}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
SharedExpected = "==> require_vsn_rt \\(compile\\)",
diff --git a/inttest/rgen1/retest.config b/inttest/rgen1/retest.config
index b569f14..244096d 100644
--- a/inttest/rgen1/retest.config
+++ b/inttest/rgen1/retest.config
@@ -1 +1 @@
-{timeout, 120000}.
+{timeout, 240000}.
diff --git a/inttest/rgen1/rgen1_rt.erl b/inttest/rgen1/rgen1_rt.erl
index 1bf36c2..5847f4a 100644
--- a/inttest/rgen1/rgen1_rt.erl
+++ b/inttest/rgen1/rgen1_rt.erl
@@ -6,13 +6,16 @@
%% Exercise release generation w/ templating
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
{copy, "reltool.config"},
{copy, "test.config"},
- {copy, "vars.config"},
- {copy, "../../rebar"}
- ].
+ {copy, "vars.config"}
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
{ok, _} = retest_sh:run("./rebar -v generate", []),
diff --git a/inttest/t_custom_config/t_custom_config_rt.erl b/inttest/t_custom_config/t_custom_config_rt.erl
index a373b32..1f21927 100644
--- a/inttest/t_custom_config/t_custom_config_rt.erl
+++ b/inttest/t_custom_config/t_custom_config_rt.erl
@@ -6,10 +6,15 @@
-include_lib("eunit/include/eunit.hrl").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
- [{copy, "../../rebar", "rebar"},
+ [
{copy, "custom.config", "custom.config"},
- {create, "ebin/custom_config.app", app(custom_config, [custom_config])}].
+ {create, "ebin/custom_config.app", app(custom_config, [custom_config])}
+ ] ++ inttest_utils:rebar_setup().
run(Dir) ->
retest_log:log(debug, "Running in Dir: ~s~n", [Dir]),
diff --git a/inttest/tdeps1/tdeps1_rt.erl b/inttest/tdeps1/tdeps1_rt.erl
index 3591ec0..849403b 100644
--- a/inttest/tdeps1/tdeps1_rt.erl
+++ b/inttest/tdeps1/tdeps1_rt.erl
@@ -4,16 +4,18 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
%% Exercise transitive dependencies
%% A -> B -> C, where A includes a .hrl from B which includes .hrl from C
-
files() ->
[
%% A application
{create, "ebin/a.app", app(a, [a])},
{copy, "a.rebar.config", "rebar.config"},
{copy, "a.erl", "src/a.erl"},
- {copy, "../../rebar", "rebar"},
%% B application
{create, "repo/b/ebin/b.app", app(b, [])},
@@ -23,7 +25,7 @@ files() ->
%% C application
{create, "repo/c/ebin/c.app", app(c, [])},
{copy, "c.hrl", "repo/c/include/c.hrl"}
- ].
+ ] ++ inttest_utils:rebar_setup().
apply_cmds([], _Params) ->
ok;
@@ -39,7 +41,7 @@ run(_Dir) ->
"git add -A",
"git config user.email 'tdeps@example.com'",
"git config user.name 'tdeps'",
- "git commit -a -m 'Initial Commit'"],
+ "git commit -a -m \"Initial Commit\""],
apply_cmds(GitCmds, [{dir, "repo/b"}]),
apply_cmds(GitCmds, [{dir, "repo/c"}]),
diff --git a/inttest/tdeps2/tdeps2_rt.erl b/inttest/tdeps2/tdeps2_rt.erl
index 97a24ce..a5665ad 100644
--- a/inttest/tdeps2/tdeps2_rt.erl
+++ b/inttest/tdeps2/tdeps2_rt.erl
@@ -4,10 +4,13 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
%% 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
@@ -21,7 +24,6 @@ files() ->
{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, [])},
@@ -31,7 +33,7 @@ files() ->
%% C application
{create, "repo/c/ebin/c.app", app(c, [])},
{copy, "c.hrl", "repo/c/include/c.hrl"}
- ].
+ ] ++ inttest_utils:rebar_setup().
apply_cmds([], _Params) ->
ok;
@@ -47,7 +49,7 @@ run(_Dir) ->
"git add -A",
"git config user.email 'tdeps@example.com'",
"git config user.name 'tdeps'",
- "git commit -a -m 'Initial Commit'"],
+ "git commit -a -m \"Initial Commit\""],
ok = apply_cmds(GitCmds, [{dir, "repo/b"}]),
ok = apply_cmds(GitCmds, [{dir, "repo/c"}]),
diff --git a/inttest/tdeps3/tdeps3_rt.erl b/inttest/tdeps3/tdeps3_rt.erl
index f56b3ca..bc47772 100644
--- a/inttest/tdeps3/tdeps3_rt.erl
+++ b/inttest/tdeps3/tdeps3_rt.erl
@@ -4,12 +4,15 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
%% Exercise transitive dependencies where there are multiple files
%% depending on the same set of deps as well as lib_dir directives
%% A -> B -> C -> D -> E
%% |--> G(via lib_dir)
%% |--> F -> D -> E
-
files() ->
[
%% A1 application
@@ -17,7 +20,6 @@ files() ->
{template, "a.erl", "src/a.erl", dict:from_list([{module, a}, {dep, b}])},
{copy, "a.rebar.config", "rebar.config"},
- {copy, "../../rebar", "rebar"},
%% B application
{create, "repo/b/ebin/b.app", app(b, [b])},
@@ -52,7 +54,7 @@ files() ->
{create, "repo/b/apps/g/ebin/g.app", app(g, [])},
{copy, "e.hrl", "repo/b/apps/g/include/g.hrl"}
- ].
+ ] ++ inttest_utils:rebar_setup().
apply_cmds([], _Params) ->
ok;
@@ -68,7 +70,7 @@ run(_Dir) ->
"git add -A",
"git config user.email 'tdeps@example.com'",
"git config user.name 'tdeps'",
- "git commit -a -m 'Initial Commit'"],
+ "git commit -a -m \"Initial Commit\""],
ok = apply_cmds(GitCmds, [{dir, "repo/b"}]),
ok = apply_cmds(GitCmds, [{dir, "repo/c"}]),
ok = apply_cmds(GitCmds, [{dir, "repo/d"}]),
diff --git a/inttest/tdeps_update/tdeps_update_rt.erl b/inttest/tdeps_update/tdeps_update_rt.erl
index c53e253..b4919c5 100644
--- a/inttest/tdeps_update/tdeps_update_rt.erl
+++ b/inttest/tdeps_update/tdeps_update_rt.erl
@@ -4,6 +4,10 @@
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
%% Exercises update deps, with recursive dependency updates.
%% Initially:
%% A(v0.5) -> B(v0.2.3) -> C(v1.0)
@@ -25,7 +29,6 @@ files() ->
{template, "a.erl", "apps/a1/src/a1.erl", dict:from_list([{module, a1}])},
{copy, "root.rebar.config", "rebar.config"},
- {copy, "../../rebar", "rebar"},
%% B application
{create, "repo/b/ebin/b.app", app(b, [], "0.2.3")},
@@ -64,57 +67,62 @@ files() ->
{copy, "c.rebar.config", "c.rebar.config"},
{copy, "c2.rebar.config", "c2.rebar.config"},
{copy, "c3.rebar.config", "c3.rebar.config"}
- ].
+ ] ++ inttest_utils:rebar_setup().
apply_cmds([], _Params) ->
ok;
apply_cmds([Cmd | Rest], Params) ->
- io:format("Running: ~s (~p)\n", [Cmd, Params]),
- {ok, _} = retest_sh:run(Cmd, Params),
+ io:format("Running: ~p (~p)\n", [Cmd, Params]),
+ {ok, _} = retest:run(Cmd, Params),
apply_cmds(Rest, Params).
-run(_Dir) ->
+run(Dir) ->
%% Initialize the b/c/d apps as git repos so that dependencies pull
%% properly
GitCmds = ["git init",
"git add -A",
- "git config user.email 'tdeps@example.com'",
- "git config user.name 'tdeps'",
- "git commit -a -m 'Initial Commit'"],
+ "git config user.email \"tdeps@example.com\"",
+ "git config user.name \"tdeps\"",
+ "git commit -a -m \"Initial Commit\""],
BCmds = ["git tag 0.2.3",
- "cp ../../b2.rebar.config rebar.config",
- "cp ../../b2.app ebin/b.app",
- "git commit -a -m 'update to 0.2.4'",
+ {copy, "../../b2.rebar.config", "rebar.config"},
+ {copy, "../../b2.app", "ebin/b.app"},
+ {touch, "ebin/b.app"},
+ "git commit -a -m \"update to 0.2.4\"",
"git tag 0.2.4",
- "cp ../../b3.rebar.config rebar.config",
- "cp ../../b3.app ebin/b.app",
- "git commit -a -m 'update to 0.2.5'",
+ {copy, "../../b3.rebar.config", "rebar.config"},
+ {copy, "../../b3.app", "ebin/b.app"},
+ {touch, "ebin/b.app"},
+ "git commit -a -m \"update to 0.2.5\"",
"git tag 0.2.5",
- "cp ../../b4.rebar.config rebar.config",
- "cp ../../b4.app ebin/b.app",
- "git commit -a -m 'update to 0.2.6'",
+ {copy, "../../b4.rebar.config", "rebar.config"},
+ {copy, "../../b4.app", "ebin/b.app"},
+ {touch, "ebin/b.app"},
+ "git commit -a -m \"update to 0.2.6\"",
"git tag 0.2.6"],
%"git checkout 0.2.3"],
CCmds = ["git tag 1.0",
- "cp ../../c2.hrl include/c.hrl",
- "cp ../../c2.app ebin/c.app",
- "cp ../../c.rebar.config rebar.config",
+ {copy, "../../c2.hrl", "include/c.hrl"},
+ {copy, "../../c2.app", "ebin/c.app"},
+ {copy, "../../c.rebar.config", "rebar.config"},
"git add rebar.config",
- "git commit -a -m 'update to 1.1'",
+ "git commit -a -m \"update to 1.1\"",
"git tag 1.1",
- "cp ../../c3.app ebin/c.app",
- "cp ../../c2.rebar.config rebar.config",
- "git commit -a -m 'update to 1.2'",
+ {copy, "../../c3.app", "ebin/c.app"},
+ {copy, "../../c2.rebar.config", "rebar.config"},
+ "git commit -a -m \"update to 1.2\"",
"git tag 1.2",
- "cp ../../c4.app ebin/c.app",
- "cp ../../c3.rebar.config rebar.config",
- "git commit -a -m 'update to 1.3'",
+ {copy, "../../c4.app", "ebin/c.app"},
+ {copy, "../../c3.rebar.config", "rebar.config"},
+ {touch, "rebar.config"},
+ "git commit -a -m \"update to 1.3\"",
"git tag 1.3"],
%"git checkout 1.0"],
DCmds = ["git tag 0.7"],
ECmds = ["git tag 2.0",
- "cp ../../e2.app ebin/e.app",
- "git commit -a -m 'update to 2.1'",
+ {copy, "../../e2.app", "ebin/e.app"},
+ {touch, "ebin/e.app"},
+ "git commit -a -m \"update to 2.1\"",
"git tag 2.1"],
FCmds = ["git tag 0.1"],
@@ -126,13 +134,16 @@ run(_Dir) ->
{ok, _} = retest_sh:run("./rebar -v get-deps", []),
{ok, _} = retest_sh:run("./rebar -v compile", []),
- os:cmd("cp a2.rebar.config apps/a1/rebar.config"),
+ retest:run({copy, "a2.rebar.config", "apps/a1/rebar.config"},
+ [{dir, Dir}]),
{ok, _} = retest_sh:run("./rebar -v update-deps", []),
{ok, _} = retest_sh:run("./rebar -v compile", []),
- os:cmd("cp a3.rebar.config apps/a1/rebar.config"),
+ retest:run({copy, "a3.rebar.config", "apps/a1/rebar.config"},
+ [{dir, Dir}]),
{ok, _} = retest_sh:run("./rebar -v update-deps", []),
{ok, _} = retest_sh:run("./rebar -v compile", []),
- os:cmd("cp a4.rebar.config apps/a1/rebar.config"),
+ retest:run({copy, "a4.rebar.config", "apps/a1/rebar.config"},
+ [{dir, Dir}]),
{ok, _} = retest_sh:run("./rebar -v update-deps", []),
{ok, _} = retest_sh:run("./rebar -v compile", []),
ok.
diff --git a/inttest/thooks/thooks_rt.erl b/inttest/thooks/thooks_rt.erl
index 3cca6bb..f1e7fa4 100644
--- a/inttest/thooks/thooks_rt.erl
+++ b/inttest/thooks/thooks_rt.erl
@@ -5,14 +5,17 @@
-include_lib("eunit/include/eunit.hrl").
-compile(export_all).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
%% dummy lfe files
- {copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{copy, "fish.erl", "src/fish.erl"},
{create, "ebin/fish.app", app(fish, [fish])}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
?assertMatch({ok, _}, retest_sh:run("./rebar -v clean compile", [])),
@@ -27,7 +30,13 @@ ensure_command_ran_only_once(Command) ->
?assert(filelib:is_regular(File)),
%% ensure that this command only ran once (not for each module)
{ok, Content} = file:read_file(File),
- ?assertEqual(Command ++ "\n", binary_to_list(Content)).
+ %% echo behaves differently in windows and unix
+ case os:type() of
+ {win32, nt} ->
+ ?assertEqual(Command ++ " \r\n", binary_to_list(Content));
+ _ ->
+ ?assertEqual(Command ++ "\n", binary_to_list(Content))
+ end.
%%
%% Generate the contents of a simple .app file
diff --git a/inttest/tplugins/tplugins_rt.erl b/inttest/tplugins/tplugins_rt.erl
index 01d296e..d36afdd 100644
--- a/inttest/tplugins/tplugins_rt.erl
+++ b/inttest/tplugins/tplugins_rt.erl
@@ -8,9 +8,12 @@
-define(COMPILE_ERROR,
"ERROR: Plugin bad_plugin contains compilation errors:").
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
- {copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{copy, "bad.config", "bad.config"},
{copy, "fish.erl", "src/fish.erl"},
@@ -18,7 +21,7 @@ files() ->
{copy, "bad_plugin.erl", "bad_plugins/bad_plugin.erl"},
{create, "fwibble.test", <<"fwibble">>},
{create, "ebin/fish.app", app(fish, [fish])}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
?assertMatch({ok, _}, retest_sh:run("./rebar fwibble -v", [])),
diff --git a/inttest/xref_behavior/xref_behavior_rt.erl b/inttest/xref_behavior/xref_behavior_rt.erl
index 8536710..f6d5ff8 100644
--- a/inttest/xref_behavior/xref_behavior_rt.erl
+++ b/inttest/xref_behavior/xref_behavior_rt.erl
@@ -2,16 +2,19 @@
-export([files/0, run/1]).
+setup([Target]) ->
+ retest_utils:load_module(filename:join(Target, "inttest_utils.erl")),
+ ok.
+
files() ->
[
- {copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{copy, "xref_behavior.erl", "src/xref_behavior.erl"},
{copy, "gen_xref_behavior.erl", "src/gen_xref_behavior.erl"},
{create, "ebin/xref_behavior.app", app(xref_behavior,
[xref_behavior,
gen_xref_behavior])}
- ].
+ ] ++ inttest_utils:rebar_setup().
run(_Dir) ->
{ok, _} = retest_sh:run("./rebar compile", []),