Unittesting libraries

simendsjo simendsjo at gmail.com
Wed Aug 10 03:01:00 PDT 2011


On 10.08.2011 09:29, Jonathan M Davis wrote:
> On Wednesday, August 10, 2011 09:11:53 simendsjo wrote:
>> On 08.08.2011 14:11, simendsjo wrote:
>>> Is it possible to run unittests in libraries?
>>> The following doesn't work:
>>>
>>> l.d
>>> ===
>>> module l;
>>> import std.stdio;
>>> int f() { return 1; } // just to make sure it's actually compiled in
>>> unittest {
>>> writeln("Unittest from lib");
>>> assert(false);
>>> }
>>>
>>>
>>> t.d
>>> ===
>>> import l;
>>> import std.stdio;
>>> void main() {
>>> writeln(f());
>>> }
>>>
>>>   >  dmd -unittest -lib l
>>>   >  dmd -unittest t l.lib
>>>   >  t.exe
>>>
>>> 1
>>
>> Anyone? Now I have to compile every source file from the library into
>> t.d instead of compiling in the library.
>
> I don't know exactly what the deal with unit tests and libraries is, but it
> wouldn't surprise me at all if you have to compile a module into a binary to
> run its unit tests. Phobos (on Linux at least) is set up to build each module
> separately to run its unit tests. I can see why you'd want to do this, so it
> may be worth creating a bug report or enhancement request for it, but I have
> no idea whether it's supposed to work or not.
>
> - Jonathan M Davis

I haven't tested, but does this mean invariants and contracts is not run 
too? In that case I think it should be fixed (if I'm not doing anything 
wrong).


More information about the Digitalmars-d-learn mailing list