On 2013-04-03 08:45, Andrej Mitrovic wrote:

One thing I noticed is that having unittests in separate files can
catch issues with template mixins.

If you have any private or protected functions that are used by a
mixin template, the mixin template will not compile once the user
tries to use it in his own code.

There are workarounds, of course, like putting functions inside of the
template. But the point still stands that you need to also test the
library externally.

I didn't think about that.

Another thing local unittests don't test are symbol clashes. If a user
imports lib.a and lib.b from your library, he probably doesn't expect
to get symbol clashes.

Most likely not, but there's nothing wrong with it. We do have modules for a reason. It's fairly easy do solve for the user if the issue comes up. If there are some common names that always clash, then there are some problems.

In fact Phobos has had symbol clashes before, and we're working on
getting rid of them (e.g. through deprecation stages). But if Phobos
also had external test-cases then we could have avoided symbol clashes
to begin with.

I don't know if that's something unit tests should explicitly test for.

--
/Jacob Carlborg

Reply via email to