Hi!<div><br></div><div>There is a built in module attribute, -import, that can be used to import functions exported from one module into the local namespace of another module. If you really want to write a parse transform I would recommend writing one that adds this module attribute to your test modules. An alternative solution is to create an include a file containing only an -import attribute into the test modules.</div>
<div><br></div><div>echo '-import(test_module, [send/2, expect/2]). %% fix arities' > include/test_module.hrl</div><div><br></div><div>After this you will able to use test_module:send/2 and test_module:expect/2 as send/2 and expect/2 in the modules you add the following include attribute to:</div>
<div><br></div><div>-include_lib("test_module/include/test_module.hrl").</div><div><br></div><div>/ Magnus</div><div><br><div class="gmail_quote">On Fri, Nov 25, 2011 at 7:29 PM, Francis Joanis <span dir="ltr"><<a href="mailto:francis.joanis@gmail.com">francis.joanis@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi,<br>
<br>
I'm trying to write a test tool that can be used to send and expect<br>
messages over a custom protocol. I would like the tests themselves to<br>
be supplied as funs from outside the module so that:<br>
<br>
test_module:run_test(TestModulePid, fun() -> send(...), expect(...) end).<br>
<br>
would end up calling send() and expect() from test_module, as if the<br>
fun was executed in the "context" of the module (i.e. as if it were<br>
defined directly within run_test() and not supplied to it). The<br>
resulting "API" would look like some kind of DSL specialized to define<br>
my tests.<br>
<br>
In my case I need multiple test_modules to run in parallel, so I can't<br>
use a single "test_module" registered name. It would be simple to have<br>
test_module export both send() and expect() so that the following<br>
works:<br>
<br>
test_module:run_test(TestModulePid, fun(TestModulePid) -><br>
test_module:send(TestModulePid, ...),<br>
test_module:expect(TestModulePid, ...) end).<br>
<br>
but I don't like the extra verboseness of having to write<br>
test_module:... all the time.<br>
<br>
I _think_ that I might be able to use parse transforms to achieve what<br>
I want but I wanted to know if there would be an easier way.<br>
<br>
Cheers,<br>
Francis<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div>