[erlang-questions] rebar3 and CT's main node

Roberto Ostinelli <>
Sun Mar 20 10:07:03 CET 2016


Thank you for the help.

On Sat, Mar 19, 2016 at 1:14 PM, Fred Hebert <> wrote:

> If the default mode isn't enough, the easiest solution is always:
>
>     ct_run -dir test -pa `rebar3 path`
>
> Which makes your whole app available to the tests. You can bypass rebar3
> for the run, but still use it for the rest.
>

This fixes the node naming issue, but unfortunately this not enough to make
it work.

Long story short: in my tests I define some callback functions that need to
be called for the tests to pass.
However, I need to specify the path to the test directory too, because
otherwise my slave node doesn't have these functions defined.

This is how I do the trick now:
https://github.com/ostinelli/syn/blob/1.2.0/test/syn_test_suite_helper.erl#L59
(this passes)
https://github.com/ostinelli/syn/blob/1.2.0/test/syn_test_suite_helper.erl#L60
(this directory does not exist when I use rebar3).

SO: is there a way to have rebar copy the test directory to:
syn/_build/default/lib/syn/test

?

You may want to try:
>
>     rebar3 shell --sname=mynode
>      ...
>     r3:do(ct).
>
> To run tests from the interactive shell with a named node, but I have
> never tried that and don't know how it would go.
>
This actually works, though I see an "experimental" warning on top and I
cannot really automate it in a script, as there's no `--eval` option in
`rebar shell`.

So I've tried adding a test.escript file:

%%%%%%%%%%%%%%%%%%%
#!/usr/bin/env escript

main(_) ->
    r3:do(ct),
    init:stop().
%%%%%%%%%%%%%%%%%%%


But:


$ rebar3 shell --sname=mynode --script test.escript
===> Verifying dependencies...
===> Compiling syn
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8] [async-threads:0]
[hipe] [kernel-poll:false] [dtrace]

Eshell V7.3  (abort with ^G)
()1> ===> Couldn't run shell escript
"/Users/roberto/workspace/syn/test.escript" - exit:{noproc,

                   {gen_server,

                    call,

                    [rebar_agent,

                     {cmd,

                      ct},

                     infinity]}}
Stack: [{gen_server,call,3,[{file,"gen_server.erl"},{line,212}]},
        {test_escript__escript__1458__464329__444078__2,main,1,
            [{file,"/Users/roberto/workspace/syn/test.escript"},{line,5}]},



And I'm stuck.

Any ideas?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160320/59d20849/attachment.html>


More information about the erlang-questions mailing list