On Sunday, 5 September 2021 at 15:04:58 UTC, H. S. Teoh wrote:
>On Fri, Sep 03, 2021 at 08:39:35AM +0000, deadalnix via Digitalmars-d wrote: [...]
> > >3/ it still isn't possible to run the unit tests of several modules in one go by passing a list of modules to the compiler (in the same way you can compile several modules in one go and generate an object file for all of them at once).
Of course you can. Under my proposal:
dmd -unittest=module -i -run mod1.d mod2.d mod3.d main.d
No, this will run the code in mod1.d , passing ["mod2.d" "mod3.d" "main.d"] as command line arguments.
I really don't understand the logic of this: surely the compiler ought to be able to know which module main() is declared in, so why does it need the user to select one specific module to be run?
$ grep -H . mod?.d
mod1.d:void main(string[] args) {
mod1.d: import std.stdio : writeln;
mod1.d: writeln(args[1 .. $]);
mod1.d:}
$ dmd -run mod1.d mod2.d mod3.d
["mod2.d", "mod3.d"]
mod1.d is a program that prints its args that I'd like to run with some arguments. mod2.d and mod3.d are not modules that even exist; I just want them printed out like that. Distinguishing between dmd and program arguments isn't a matter of compiler smarts.