On Tuesday, 31 March 2015 at 14:27:45 UTC, Johannes Pfau wrote:
Am Tue, 31 Mar 2015 13:31:58 +0000
schrieb "Dicebot" <[email protected]>:

On Tuesday, 31 March 2015 at 09:08:47 UTC, Johannes Pfau wrote:
> Am Mon, 30 Mar 2015 14:52:36 -0700
> schrieb Andrei Alexandrescu <[email protected]>:
>
>> We're having a strong need for named unittests at Facebook >> for
>> multiple reasons.

> Right now the default implementation works by putting > pointers to a > test function into ModuleInfo. We could instead add arrays > of some > 'unittest information' struct to ModuleInfo to support names > etc. But > we can't make this as extensible and powerful as it should > be: In order > to support arbitrary UDAs we'd always need some kind of > UDA=>runtime
> serialization.

Most powerful solution would be to simply put attributes for unittest blocks in runtime information for tests (using RTTI it should be possible to define such variadic structure in similar manner as D-style variadic function arguments).

Yes, one array of TestAttribute[]
struct TestAttribute
{
    TypeInfo ti;
    void* value;
}
per unittest and an array of unittests in ModuleInfo would likely work.

But this works only for unittests and it's still restricted*. I'd prefer a more general solution which also works for benchmarks and similar
usecases.

*For example you can extract file/line
information (useful for IDEs) but you'll have to add explicit @fileline UDAs to the tests. With compile-time reflection you can gather this
information without additional UDAs.

Problem with more generic solution is that it is also note demanding and potentially more intrusive - right now UDA don't affect actual types at all. I'd prefer something simple and practical that can work for texts right now - those are special enough case to justify dedicated approach (even if generic rtinfo gets added later)

Reply via email to