Merge pull request #411 from kittee/ct_appconfig_fix

Fix app.config argument passing when using ct_run (take 2)
This commit is contained in:
Fred Hebert 2014-12-22 18:16:54 -05:00
commit dd9125e09a
8 changed files with 120 additions and 6 deletions

1
THANKS
View file

@ -132,3 +132,4 @@ Luis Rascao
Vlad Dumitrescu Vlad Dumitrescu
stwind stwind
Pavel Baturko Pavel Baturko
Igor Savchuk

2
inttest/ct3/app.config Normal file
View file

@ -0,0 +1,2 @@
%% This file is an application config file, not a CT test config file
[{a1, [{foo, bar}]}].

View file

55
inttest/ct3/ct3_rt.erl Normal file
View file

@ -0,0 +1,55 @@
%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 et
%% -------------------------------------------------------------------
%%
%% rebar: Erlang Build Tools
%%
%% Copyright (c) 2014 Savchuk Igor
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy
%% of this software and associated documentation files (the "Software"), to deal
%% in the Software without restriction, including without limitation the rights
%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%% copies of the Software, and to permit persons to whom the Software is
%% furnished to do so, subject to the following conditions:
%%
%% The above copyright notice and this permission notice shall be included in
%% all copies or substantial portions of the Software.
%%
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
%% THE SOFTWARE.
%% -------------------------------------------------------------------
-module(ct3_rt).
-compile(export_all).
files() ->
[{create, "ebin/a1.app", app(a1)},
{copy, "../../rebar", "rebar"},
{copy, "rebar.config", "rebar.config"},
{copy, "app.config", "itest/app.config"},
{copy, "test_SUITE.erl", "itest/test_SUITE.erl"},
{copy, "converted"},
{copy, "unconverted"}].
run(_Dir) ->
{ok, _} = retest:sh("./rebar compile ct -v", [{env, [{"ERL_FLAGS", "-name ct_rt3"}]}]),
ok.
%%
%% Generate the contents of a simple .app file
%%
app(Name) ->
App = {application, Name,
[{description, atom_to_list(Name)},
{vsn, "1"},
{modules, []},
{registered, []},
{applications, [kernel, stdlib]}]},
io_lib:format("~p.\n", [App]).

2
inttest/ct3/rebar.config Normal file
View file

@ -0,0 +1,2 @@
{ct_dir, "itest"}.
{ct_extra_params, "-repeat 2 -pa converted -erl_args -pa unconverted"}.

View file

@ -0,0 +1,52 @@
%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 et
%% -------------------------------------------------------------------
%%
%% rebar: Erlang Build Tools
%%
%% Copyright (c) 2014 Savchuk Igor
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy
%% of this software and associated documentation files (the "Software"), to deal
%% in the Software without restriction, including without limitation the rights
%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%% copies of the Software, and to permit persons to whom the Software is
%% furnished to do so, subject to the following conditions:
%%
%% The above copyright notice and this permission notice shall be included in
%% all copies or substantial portions of the Software.
%%
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
%% THE SOFTWARE.
%% -------------------------------------------------------------------
-module(test_SUITE).
-compile(export_all).
-include_lib("ct.hrl").
all() ->
[simple_test,
app_config_file_test,
check_path].
simple_test(Config) ->
io:format("Test: ~p\n", [Config]).
app_config_file_test(_Config) ->
application:start(a1),
{ok, bar} = application:get_env(a1, foo),
application:stop(a1).
%% check if -erl_args in ct_extra_params of rebar.config is working
%% if it is, path before -erl_args is converted to absolute
%% and path after -erl_args is not
check_path(_Config) ->
Path = code:get_path(),
false = lists:member("converted", Path),
true = lists:member("unconverted", Path).

View file

View file

@ -226,9 +226,10 @@ make_cmd(TestDir, RawLogDir, Config) ->
filename:join(Cwd, TestDir)]) ++ filename:join(Cwd, TestDir)]) ++
get_cover_config(Config, Cwd) ++ get_cover_config(Config, Cwd) ++
get_ct_config_file(TestDir) ++ get_ct_config_file(TestDir) ++
get_config_file(TestDir) ++
get_suites(Config, TestDir) ++ get_suites(Config, TestDir) ++
get_case(Config); get_case(Config) ++
get_extra_params(Config) ++
get_config_file(TestDir);
SpecFlags -> SpecFlags ->
?FMT("~s" ?FMT("~s"
" -pa ~s" " -pa ~s"
@ -242,11 +243,12 @@ make_cmd(TestDir, RawLogDir, Config) ->
build_name(Config), build_name(Config),
LogDir, LogDir,
filename:join(Cwd, TestDir)]) ++ filename:join(Cwd, TestDir)]) ++
SpecFlags ++ get_cover_config(Config, Cwd) SpecFlags ++
get_cover_config(Config, Cwd) ++
get_extra_params(Config)
end, end,
Cmd1 = Cmd ++ get_extra_params(Config),
RawLog = filename:join(LogDir, "raw.log"), RawLog = filename:join(LogDir, "raw.log"),
{Cmd1, RawLog}. {Cmd, RawLog}.
build_name(Config) -> build_name(Config) ->
case rebar_config:get_local(Config, ct_use_short_names, false) of case rebar_config:get_local(Config, ct_use_short_names, false) of
@ -326,7 +328,7 @@ get_config_file(TestDir) ->
false -> false ->
" "; " ";
true -> true ->
" -config " ++ Config " -erl_args -config " ++ Config
end. end.
get_suites(Config, TestDir) -> get_suites(Config, TestDir) ->