Actually this is not really a dirty hack. The reason why you can define your own error handler is to allow customising error handling in an application.<br><br>We provided all the tools necessary to give you a wide range of options when shooting your own foot. :-) Seriously this was not the case, we wanted to provide tools to build systems and not packaged solutions.<br>
<br>Robert<br><br><div class="gmail_quote">2008/6/7 Christian S <<a href="mailto:chsu79@gmail.com">chsu79@gmail.com</a>>:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
> True. And something I would like even better is if I could generate<br>
> that module in a few lines close to the eunit test function. (Cant be<br>
> impossible to create a module directly from a list of atoms and funs.<br>
> Doesnt need to be fast.)<br>
><br>
> A downside is that the module namespace is node-wide, so you cant<br>
> safely run your tests in parallell on the same node. This is a reason<br>
> I consider this to be a very dirty way to slip in the mock.<br>
<br>
To follow up on myself. I hacked up something that almost fulfills my wishes:<br>
<br>
You load this module that follows the inteface of an error_handler:<br>
<br>
-module(mock).<br>
<br>
-compile(export_all).<br>
<br>
undefined_function(Mod, F, Args) -><br>
    case get(Mod) of<br>
        undefined -><br>
            exit({undefined, Mod, F, Args});<br>
        MockDict -><br>
            Fun = dict:fetch(F, MockDict),<br>
            apply(Fun, Args)<br>
    end.<br>
<br>
undefined_lambda(_Mod, _Fun, _Args) -><br>
    exit(undef).<br>
<br>
<br>
Second, I put this in my process to install the above error_handler<br>
for this process:<br>
<br>
init() -><br>
    Mock = dict:from_list([{eat, fun() -> yum end}]),<br>
    put(banana, Mock),<br>
    process_flag(error_handler, mock),<br>
    loop().<br>
<br>
<br>
Whenever this process calls banana:eat(), it will get the atom 'yum'<br>
back.  Completly process local.<br>
<br>
<br>
<br>
YES! It is dirty!  The prettiest flowers grow in manure!<br>
<br>
<br>
PS.<br>
<a href="http://paste.lisp.org/display/61885" target="_blank">http://paste.lisp.org/display/61885</a> has more of the code and<br>
experiment, at least until it goes away in a couple of hours.<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br>