[erlang-questions] EUnit/escript bug - fails to terminate long-running (infinite) test

Tim Bates <>
Thu Apr 26 15:01:12 CEST 2007


Hi,
I'm trying to use escript to simplify my makefiles. When trying to run 
eunit from an escript I found that it behaves differently to when called 
using erl.

The test:

infinite_loop_test() ->
     infinite_loop_test().


The escript call:

main(["eunit" | BeamFiles]) ->
     Paths = [filename:dirname(Beam) || Beam <- BeamFiles],
     code:add_pathsa(uniq(lists:sort(Paths))),
     Modules = [list_to_atom(filename:basename(Beam, ".beam")) || Beam 
<- BeamFiles],
     case eunit:test(Modules) of
         ok ->
             ok;
         error ->
             error;
         Other ->
             io:fwrite("~p~n", [Other])
     end;


The result:

When calling eunit:test(mytest) from within an Erlang shell I get

mytest:infinite_loop_test...*timed out*

=======================================================
   Failed: 0.  Aborted: 1.  Skipped: 0.  Succeeded: 0.
error

When running my escript I get as far as the "timed out" message and then 
it hangs - not using CPU, so the test isn't still running, but the 
script never terminates.

Any idea why eunit should behave differently when called from escript 
compared to the Erlang shell?

Thanks,
Tim.

-- 
Tim Bates




More information about the erlang-questions mailing list