[erlang-questions] Getting eunit to display the full term?
Richard Carlsson
carlsson.richard@REDACTED
Mon Jul 4 11:15:17 CEST 2011
On 07/04/2011 07:01 AM, Garrett Smith wrote:
> On Sun, Jul 3, 2011 at 1:24 PM, Rudolph van Graan<rvg.mailing@REDACTED> wrote:
>> Is there a simple way (other than changing the source) to make eUnit display
>> the entire term that didn't match in its output instead of the ...
>> truncation? I find it pointless to have write a manual version of the test
>> just to see what is not matching.
>
> It's not elegant, but I insert io:format("~p", [Result]) in places
> where the result gets truncated.
>
> Output via io:format is suppressed when the test succeeds, suggesting
> that this is somehow a feature.
>
> I would argue though that this is a design flaw in eunit -- results
> should not be truncated.
EUnit doesn't truncate the results at the source, but only in the tty
output. There should probably be an option to the tty output module to
control the truncation depth, but in general, you really want the tty
output to be fairly short, or in many cases you'll just drown in
thousands of lines of output per failed test.
What's currently missing is a file logger backend, to write the complete
(or as deep as you want) output to a file. It shouldn't be hard to make,
if anyone has the time: copy the module eunit_tty and adapt it a bit,
then hook it in as a standard option in the main eunit module. While
developing, you can hook in your module using the option {report, X}
where X = {Mod, Opts} for a listener module Mod called as
Mod:start(Opts), or X = Pid/Atom for an existing listener process. See
also the docs for eunit_surefire, which is a similar but slightly more
complicated plugin.
And of course, if anyone has ideas for other kinds of listeners, go
ahead - it's not hard to make one. Sorry that I haven't had time to
document the callback interface yet, but it's considered stable now. See
the eunit_surefire docs as an example.
/Richard
More information about the erlang-questions
mailing list