Parallel execution of unittests
bearophile via Digitalmars-d
digitalmars-d at puremagic.com
Thu May 1 00:32:42 PDT 2014
Walter Bright:
> On 4/30/2014 8:54 AM, bearophile wrote:
>> I'd also like some built-in way (or partially built-in) to use
>> a module only as
>> "main module" (to run its demos) or as module to be imported.
>> This problem is
>> solved in Python with the "if __name__ == "__main__":" idiom.
>
> dmd foo.d -unittest -main
I think you are greatly missing the point. The unittests are
mainly for the developer, while the demo is for the user of the
demo. The unittests validate the code, while the demo shows how
to use the module (and surely the demo is not meant to run in
parallel with the other unittests). Sometimes the demo part is
more than a demo, it contains usable and useful code, with a
command-line interface, to allow stand alone usage of the module
functionality. Currently this is how I do it:
module foobar;
// Here functions and
// classes with their unittests
version (foobar_main) {
void main() {
// foobar module demo code here.
}
}
I can't use just "version(main)", because the module could import
other modules with their own demo sections. So I need something
to tell them apart from each other.
This could be simplified with a solution similar to the Python
one:
version (__is_main) {
void main() {
// foobar module demo code here.
}
}
Now if I have module A and B, where B imports A, and both have
the demo main, I can use this to compile A stand-alone with its
demo:
dmd A.d
And I can use this to not compile the demo of A and compile the
demo section of B:
dmd A.d B.d
This is just the basic idea, and perhaps people suggested
something better than this.
Bye,
bearophile
More information about the Digitalmars-d
mailing list