www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Unit tests in libraries?

reply Mike Linford <mike.linford.reg gmail.com> writes:
Is this a bug? Unit tests do not seem to work in libraries. I'm using dmd 
1.062 for linux.

mylib.d :
module mylib;

void blah()
{
}
unittest
{
	assert(false);
}

main.d :
module main;

import mylib;

void main()
{
	blah();
}

The unit test does not get run when compiled as:
dmd -lib mylib.d
dmd main.d mylib.a

But does get run when compiled as
dmd main.d mylib.d

Is this the intended behavior for unit tests in libraries?



-- 
Mike Linford
Aug 14 2010
next sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Sat, 14 Aug 2010 23:35:54 -0400, Mike Linford  
<mike.linford.reg gmail.com> wrote:

 Is this a bug? Unit tests do not seem to work in libraries. I'm using dmd
 1.062 for linux.

 mylib.d :
 module mylib;

 void blah()
 {
 }
 unittest
 {
 	assert(false);
 }

 main.d :
 module main;

 import mylib;

 void main()
 {
 	blah();
 }

 The unit test does not get run when compiled as:
 dmd -lib mylib.d
 dmd main.d mylib.a

 But does get run when compiled as
 dmd main.d mylib.d

 Is this the intended behavior for unit tests in libraries?

Did you pass -unittest to dmd? It needs to be there when compiling the file that contains unit tests. I'm surprised unittests run at all with those compile lines. -Steve
Aug 16 2010
prev sibling next sibling parent Mike Linford <mike.linford.reg gmail.com> writes:
On Mon, 16 Aug 2010 08:37:35 -0400, Steven Schveighoffer wrote:

 On Sat, 14 Aug 2010 23:35:54 -0400, Mike Linford
 <mike.linford.reg gmail.com> wrote:
 
 Is this a bug? Unit tests do not seem to work in libraries. I'm using
 dmd 1.062 for linux.

 mylib.d :
 module mylib;

 void blah()
 {
 }
 unittest
 {
 	assert(false);
 }

 main.d :
 module main;

 import mylib;

 void main()
 {
 	blah();
 }

 The unit test does not get run when compiled as: dmd -lib mylib.d
 dmd main.d mylib.a

 But does get run when compiled as
 dmd main.d mylib.d

 Is this the intended behavior for unit tests in libraries?

Did you pass -unittest to dmd? It needs to be there when compiling the file that contains unit tests. I'm surprised unittests run at all with those compile lines. -Steve

Haha, whoops, forgot to mention that I DID indeed include -unittest in all compile lines. -- Mike Linford
Aug 16 2010
prev sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Mon, 16 Aug 2010 14:04:57 -0400, Mike Linford  
<mike.linford.reg gmail.com> wrote:

 On Mon, 16 Aug 2010 08:37:35 -0400, Steven Schveighoffer wrote:

 On Sat, 14 Aug 2010 23:35:54 -0400, Mike Linford
 <mike.linford.reg gmail.com> wrote:

 Is this a bug? Unit tests do not seem to work in libraries. I'm using
 dmd 1.062 for linux.

 mylib.d :
 module mylib;

 void blah()
 {
 }
 unittest
 {
 	assert(false);
 }

 main.d :
 module main;

 import mylib;

 void main()
 {
 	blah();
 }

 The unit test does not get run when compiled as: dmd -lib mylib.d
 dmd main.d mylib.a

 But does get run when compiled as
 dmd main.d mylib.d

 Is this the intended behavior for unit tests in libraries?

Did you pass -unittest to dmd? It needs to be there when compiling the file that contains unit tests. I'm surprised unittests run at all with those compile lines. -Steve

Haha, whoops, forgot to mention that I DID indeed include -unittest in all compile lines.

Hm... I would say if -unittest is passed to the dmd -lib line, and you don't get unit tests out of the resulting executable, you found a compiler bug! -Steve
Aug 16 2010