[erlang-patches] [erlang-questions] cover & export_all

Peti Gömöri <>
Wed Jul 10 03:19:16 CEST 2013


Hi OTP team,

here is a patch that addresses the problem Yuri described.
(I haven't added any tests or docs though)

is it true that now you also accept pull requests?



git fetch git://github.com/gomoripeti/otp.git pgö-cover-export-all

https://github.com/gomoripeti/otp/compare/erlang:maint...pgö-cover-export-all
https://github.com/gomoripeti/otp/compare/erlang:maint...pgö-cover-export-all.patch


br
Peter

On Wed, Jul 10, 2013 at 12:34 AM, Peti Gömöri <> wrote:

> Hi Yuri,
>
> You are right, while cover compiling from source works (you can use this
> as a workaround):
> > cover:compile(cover_test, UserOptions = [export_all, debug_info]).
> {ok,cover_test}
> > cover_test:test().
> ok
>
> (because UserOptions from the arguments is taken when cover recompiles the
> instrumented forms)
> when cover compiling from beam UserOptions = [] is taken.
> This could be fixed in cover by taking the compile options from the beam
> file as you assumed how it works.
>
> Actually the documentation still says that "Only options defining include
> file directories and macros are passed to compile:file/2, everything else
> is ignored." apparently a patch from Tobias Schlager added export_all to
> the allowed options of cover:compile for the exact same use case as you
> had. But this is missing from cover:compile_beam.
>
> May be I try to come up with a patch
>
> br
> Peter
>
>
>
> On Tue, Jul 9, 2013 at 11:56 AM, Yuri Lukyanov <> wrote:
>
>> It seems that there is no way to cover-compile modules with export_all.
>> Here is a simple example:
>>
>> cover_test.erl:
>>
>> -module(cover_test).
>> test() -> ok.
>>
>>
>> $ erl
>> Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:4:4]
>> [async-threads:0] [hipe] [kernel-poll:false]
>>
>> Eshell V5.9.1  (abort with ^G)
>> 1> c(cover_test, [debug_info,export_all]).
>> {ok,cover_test}
>> 2> cover_test:test().
>> ok
>> 3> cover:compile_beam(cover_test).
>> {ok,cover_test}
>> 4> cover_test:test().
>> ** exception error: undefined function cover_test:test/0
>> 5>
>>
>>
>> Could someone explain why it is like this? Is it done on purpose?
>> Maybe it's a bug?
>> The reason I want modules to be cover-compiled with +export_all is
>> that it is sometimes convinient to have unit tests outside of a
>> module. Before unit tests are run the modules get compiled with
>> +export_all for tests to be able to access private functions. But the
>> situation is that it is not possibe in this case to enable coverage
>> analysys.
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20130710/d2e8b9c7/attachment.html>


More information about the erlang-patches mailing list