phobos unit tests
ZombineDev via Digitalmars-d
digitalmars-d at puremagic.com
Sat Sep 3 09:56:08 PDT 2016
On Saturday, 3 September 2016 at 15:54:31 UTC, Jonathan M Davis
wrote:
> On Saturday, September 03, 2016 15:06:33 Andrei Alexandrescu
> via Digitalmars-d wrote:
>> On 9/3/16 5:36 AM, Manu via Digitalmars-d wrote:
>> > This document: https://wiki.dlang.org/Contributing_to_Phobos
>> >
>> > States: "Avoid unittest in templates (it will generate a new
>> > unittest for each instance) - put your tests outside"
>>
>> Actually that's a good thing, sometimes you do want to run a
>> unittest for each instantiation.
>
> Sometimes, sure. But usually not.
>
>> > Sounds reasonable, but then I realised that most of my unit
>> > tests are documenting unittests... this recommendation is in
>> > conflict with the documentation standards... who wins?
>>
>> Just version it only for the documentation.
>
> Then the tests won't be run unless your documentation build is
> also your unittest build, and they frequently can't be the same
> - e.g. when something differs between operating systems, and
> you have a separate D_Ddoc or StdDdoc block so that you can
> have proper documentation without requiring that the
> documentation be built on all systems and potentially being
> able to document what exists on each system. For instance, the
> supported clock types vary quite a bit across operating
> systems, so the core.time.ClockType enum has different values
> on different systems and version(CoreDdoc) is used so that the
> documentation can list them all and list the consistently
> across systems.
>
> You could add some sort of version identifier that's specific
> to your build that you use for your unittest builds (similar to
> how Phobos has StdDdoc separate from D_Ddoc), but even if you
> do that, you still have the problem of the non-generic unit
> tests within a template being compiled into every instantiation
> of the template that's part of your unittest build, and all of
> those tests will get run, increasing both the build times and
> the time it takes to run the unit tests.
>
> - Jonathan M Davis
You can just enable the unittests for a single instance that you
know for sure that it will be used. For example:
1)
https://github.com/dlang/phobos/blob/v2.071.2-b3/std/experimental/ndslice/slice.d#L808
2)
https://github.com/dlang/phobos/blob/v2.071.2-b3/std/experimental/ndslice/slice.d#L947
More information about the Digitalmars-d
mailing list