From bc46b501d01eb6d9fc54e5e319f363a276e35a0d Mon Sep 17 00:00:00 2001 From: Igor Savchuk Date: Thu, 23 Oct 2014 22:19:33 +0400 Subject: [PATCH] Fix app.config argument passing when using ct_run ct_run has changed its config key from -ct_config to -config, thus, -config key, used to specify app.config now must be placed after -erl_args --- THANKS | 3 +- inttest/ct3/app.config | 2 ++ inttest/ct3/converted/.keep | 0 inttest/ct3/ct3_rt.erl | 56 +++++++++++++++++++++++++++++++++++ inttest/ct3/rebar.config | 2 ++ inttest/ct3/test_SUITE.erl | 52 ++++++++++++++++++++++++++++++++ inttest/ct3/unconverted/.keep | 0 src/rebar_ct.erl | 14 +++++---- 8 files changed, 122 insertions(+), 7 deletions(-) create mode 100644 inttest/ct3/app.config create mode 100644 inttest/ct3/converted/.keep create mode 100644 inttest/ct3/ct3_rt.erl create mode 100644 inttest/ct3/rebar.config create mode 100644 inttest/ct3/test_SUITE.erl create mode 100644 inttest/ct3/unconverted/.keep diff --git a/THANKS b/THANKS index 9b9a448..e1da087 100644 --- a/THANKS +++ b/THANKS @@ -127,4 +127,5 @@ alisdair sullivan Alexander Verbitsky Andras Horvath Drew Varner -Roberto Aloi \ No newline at end of file +Roberto Aloi +Igor Savchuk diff --git a/inttest/ct3/app.config b/inttest/ct3/app.config new file mode 100644 index 0000000..bb718b2 --- /dev/null +++ b/inttest/ct3/app.config @@ -0,0 +1,2 @@ +%% This file is an application config file, not a CT test config file +[{a1, [{foo, bar}]}]. diff --git a/inttest/ct3/converted/.keep b/inttest/ct3/converted/.keep new file mode 100644 index 0000000..e69de29 diff --git a/inttest/ct3/ct3_rt.erl b/inttest/ct3/ct3_rt.erl new file mode 100644 index 0000000..577b10c --- /dev/null +++ b/inttest/ct3/ct3_rt.erl @@ -0,0 +1,56 @@ +%% -*- 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"), + {ok, _} = retest:sh("./rebar compile ct -v"), + 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]). diff --git a/inttest/ct3/rebar.config b/inttest/ct3/rebar.config new file mode 100644 index 0000000..124c5f2 --- /dev/null +++ b/inttest/ct3/rebar.config @@ -0,0 +1,2 @@ +{ct_dir, "itest"}. +{ct_extra_params, "-repeat 2 -pa converted -erl_args -pa unconverted"}. diff --git a/inttest/ct3/test_SUITE.erl b/inttest/ct3/test_SUITE.erl new file mode 100644 index 0000000..efd930d --- /dev/null +++ b/inttest/ct3/test_SUITE.erl @@ -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). diff --git a/inttest/ct3/unconverted/.keep b/inttest/ct3/unconverted/.keep new file mode 100644 index 0000000..e69de29 diff --git a/src/rebar_ct.erl b/src/rebar_ct.erl index 6bccb82..e6eac29 100644 --- a/src/rebar_ct.erl +++ b/src/rebar_ct.erl @@ -226,9 +226,10 @@ make_cmd(TestDir, RawLogDir, Config) -> filename:join(Cwd, TestDir)]) ++ get_cover_config(Config, Cwd) ++ get_ct_config_file(TestDir) ++ - get_config_file(TestDir) ++ get_suites(Config, TestDir) ++ - get_case(Config); + get_case(Config) ++ + get_extra_params(Config) ++ + get_config_file(TestDir); SpecFlags -> ?FMT("~s" " -pa ~s" @@ -242,11 +243,12 @@ make_cmd(TestDir, RawLogDir, Config) -> build_name(Config), LogDir, filename:join(Cwd, TestDir)]) ++ - SpecFlags ++ get_cover_config(Config, Cwd) + SpecFlags ++ + get_cover_config(Config, Cwd) ++ + get_extra_params(Config) end, - Cmd1 = Cmd ++ get_extra_params(Config), RawLog = filename:join(LogDir, "raw.log"), - {Cmd1, RawLog}. + {Cmd, RawLog}. build_name(Config) -> case rebar_config:get_local(Config, ct_use_short_names, false) of @@ -325,7 +327,7 @@ get_config_file(TestDir) -> false -> " "; true -> - " -config " ++ Config + " -erl_args -config " ++ Config end. get_suites(Config, TestDir) ->