On Tuesday, 31 March 2015 at 23:29:28 UTC, Martin Nowak wrote:
On 04/01/2015 12:58 AM, deadalnix wrote:
So now we are going to change the language for this ?
There is a natural name for unitests, the name of the module.
We have
way to break module into pieces in a backward compatible
manner now, so
it's all good.
Are you saying one should split off unittests into submodules?
No necessarily.
Typically, in most test framework, you have a class, and various
method, each of them testing various aspect of what you want to
test.
I see the class here as the module, and each of the method as a
unitest block.
Or are you saying
https://github.com/D-Programming-Language/druntime/blob/3656ba9469a60b4b23bb4a3cd95812b4f410b8a1/src/test_runner.d
is enough for your needs?
I think having multiple tests per module makes sense, e.g.
because it's
better to parallelize the tests.
See my previous comment, that is not needed. In fact i also think
having several unitest blocks is useful.
We may want to add various annotation to a test, and we have
UDA for that.
Sure use a UDA, I don't care. It seems important though, that
the
compiler recognizes it and emits it as metadata to the
ModuleInfo.
And if you need some compiler magic anyhow, a UDA just looks
redundant.
How I see it, it should be possible for a user to specify a test
runner template. This test runner template can do compile time
reflection and format its output the way to wants.
We must not bake all required attribute we need to associate a
test in the language. What if we want to associate the test with
a team name, or give it a name, or give an id that my tools uses
to check for tests, or whatever.
Every user will want to add various metadata, and these will
vary. Every users will want various output, and these will vary.
It should be possible to have a test runner that use template and
compile time reflection to make sense of the unitest block. Yes,
there is a bit of compiler magic involved, but nothing terribly
fancy.
You mean this?
http://dlang.org/phobos/core_runtime.html#.Runtime.moduleUnitTester
We need template to use compile time reflection.