Quit running foreign unittests >_<

Dicebot via Digitalmars-d digitalmars-d at puremagic.com
Tue Apr 28 16:04:00 PDT 2015


On Tuesday, 28 April 2015 at 21:28:09 UTC, Steven Schveighoffer 
wrote:
> I think by default, nobody wants to test already-tested code in 
> their application. That's not the point of unit tests.

How many more times should I repeat that I am exactly that nobody?

I do want do test everything as part of my app tests, including 
all possible dependencies, transitively. This is awesome default. 
With a simple `rdmd -main -unittest` call I can ensure that 
certain app/module works correctly without having to trust 
maintainers of dependencies to run tests regularly and without 
even knowing what those dependencies are. It is beautiful in its 
simplicity which makes it good default.

> struct S(T)
> {
>   unittest {...}
> }
>
> unittest
> {
>    S!int; // run unit tests for int
> }

If this a very slow test (and there are expected many S) simply 
put the test blocks out of the aggregate.

> Now, if I want to run unit tests for S!MyCustomType, that makes 
> sense. The library didn't test that. Which is why there should 
> be a way to do it (if it's valid!).

There is something fundamentally broken with a template that 
needs to be tested for each new user type argument. Built-in 
tests must cover all possible type classes or they are incomplete.

>> Unless compiling some specific tests causes some proven 
>> _compilation_
>> slowdown (I have yet to see that) those all must be compiled 
>> and
>> filtered by runtime test runner optionally.
>
> For example, RedBlackTree when running unit tests does a sanity 
> check of the tree for every operation. If you then use a 
> RedBlackTree in your unit tests, you are doing that again. 
> Maybe it's worth it to you, but it can increase the runtime of 
> your test by orders of magnitude. Last time I checked, 
> performance was high on people's priority lists.

It must be very slow sanity checks :X Sounds weird but I will 
accept it as given. Move the tests out of the RBL definition then.

Also performance has nothing in common with test performance. I 
can't comment about rest because from the very beginning you seem 
to make statements about testing in general which do not match my 
vision at all.


More information about the Digitalmars-d mailing list