[erlang-questions] CT and test.config

Roberto Ostinelli <>
Thu Apr 23 15:41:22 CEST 2015


My main need is to be able to modify app variables on the fly, to test
different behaviors from CT.

I'm fed up with this so I'm no instead initializing in my CT
`init_per_suite/1` function all the application variables like this:


set_environment_variables() ->
    % read config file
    ConfigFilePath = filename:join([filename:dirname(code:which(?MODULE)),
"test.config"]),
    {ok, [AppsConfig]} = file:consult(ConfigFilePath),
    % loop to set variables
    F = fun({AppName, AppConfig}) ->
        set_environment_for_app(AppName, AppConfig)
    end,
    lists:foreach(F, AppsConfig).

set_environment_for_app(AppName, AppConfig) ->
    F = fun({Key, Val}) ->
        application:set_env(AppName, Key, Val)
    end,
    lists:foreach(F, AppConfig).


If anyone knows a better way, please let me know.

Best,
r.


On Thu, Apr 23, 2015 at 3:24 PM, Roberto Ostinelli <>
wrote:

> Thank you Loïc, this works (i.e. `myapp` now starts) but now I'm unable to
> read this config file in `myapp_SUITE.erl`.
>
> `application:get_env(myapp, mykey)` and `ct:get_config({myapp, mykey})`
> both return `undefined`.
>
> On Thu, Apr 23, 2015 at 1:53 PM, Loïc Hoguin <> wrote:
>
>> ct_run -erl_args -config test.config
>>
>>
>> On 04/23/2015 02:41 PM, Roberto Ostinelli wrote:
>>
>>> All,
>>> I've got an app `myapp` which uses a standard `sys.config` file.
>>> I'd like to test it using Common Tests, with a test configuration file.
>>>
>>> I'm passing the variable `-config test.config` to ct_run.
>>>
>>> However, when I start my app from the Common Test suite
>>> `myapp_SUITE.erl` then the app fails to start because inside the app
>>> `application:get_env(myapp, mykey)` returns `undefined`. I can, however,
>>> read this variable with `ct:get_config({myapp, mykey})`.
>>>
>>> How am I supposed to use a custom `test.config` file that is loaded in
>>> ct_run *and* read by the app itself?
>>>
>>> I've spent almost a day on this and I'm honestly 5 minutes away from
>>> dropping all this in the dustbin and using an external test tool
>>> instead. Please help me stick to Erlang. :)
>>>
>>> r.
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> erlang-questions mailing list
>>> 
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>
>>>
>> --
>> Loïc Hoguin
>> http://ninenines.eu
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150423/d83b5cb5/attachment.html>


More information about the erlang-questions mailing list