Thread overview
[Issue 24584] [phobos] `make unittest` should not rerun tests unnecessarily
Jun 14
kinke
Jun 14
kinke
June 12
https://issues.dlang.org/show_bug.cgi?id=24584

--- Comment #1 from Nick Treleaven <nick@geany.org> ---
> running all tests despite any failing tests would be useful

Looks like Gnu make has a -k option for that: https://www.gnu.org/software/make/manual/html_node/Options-Summary.html#index-_002d_002dkeep_002dgoing-2

Not tested. But regardless it would be useful if there was a way to run an individual module's unittests rather than have to rerun the ones that already succeeded.

--
June 14
https://issues.dlang.org/show_bug.cgi?id=24584

kinke <kinke@gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kinke@gmx.net

--- Comment #2 from kinke <kinke@gmx.net> ---
(In reply to Nick Treleaven from comment #1)
> But regardless it would be useful if there was a way to run an individual module's unittests rather than have to rerun the ones that already succeeded.

There are multiple existing options for running the unittests of a single
module or package, all based on
https://github.com/dlang/phobos/blob/ad9f87d1b816783bd8c13f461490e68f7fcae20a/Makefile#L431-L448:

```
$ make -j$(nproc) std/algorithm/mutation.test # single module
$ make -j$(nproc) std/algorithm.test # whole package
$ make -j$(nproc) unittest/std/algorithm/mutation.run # single module
```

That said, *running* (not building) all Phobos unittests on my laptop takes
about 6 (release) / 7.5 (debug) seconds, using current master.

--
June 14
https://issues.dlang.org/show_bug.cgi?id=24584

--- Comment #3 from Nick Treleaven <nick@geany.org> ---
> There are multiple existing options for running the unittests of a single module or package

Oh great, thanks. I completely missed that but I see now that .test is mentioned at the top of the Makefile.

> *running* (not building) all Phobos unittests on my laptop takes about 6 (release) / 7.5 (debug) seconds

I have an old PC (I don't use -j as I only have 2 cores and 1 I keep for other
things):

time make unittest
...
make[1]: Leaving directory '/home/nick/git/phobos'

real    16m57.602s
user    15m21.911s
sys     1m0.822s

--
June 14
https://issues.dlang.org/show_bug.cgi?id=24584

--- Comment #4 from Nick Treleaven <nick@geany.org> ---
(In reply to kinke from comment #2)
> ```
> $ make -j$(nproc) std/algorithm/mutation.test # single module
> $ make -j$(nproc) std/algorithm.test # whole package
> $ make -j$(nproc) unittest/std/algorithm/mutation.run # single module
> ```

Pull to update Makefile comment: https://github.com/dlang/phobos/pull/9014

--
June 14
https://issues.dlang.org/show_bug.cgi?id=24584

--- Comment #5 from kinke <kinke@gmx.net> ---
(In reply to Nick Treleaven from comment #3)
> I have an old PC (I don't use -j as I only have 2 cores and 1 I keep for
> other things):
> 
> time make unittest
> ...
> make[1]: Leaving directory '/home/nick/git/phobos'
> 
> real	16m57.602s
> user	15m21.911s
> sys	1m0.822s

Oh wow. Then the issue most likely isn't about *running* a subset of unittests
only, but improving incremental builds of the unittest runners. Currently,
changing a single Phobos source module leads to a complete rebuild (recompiling
all Phobos unittest object files):
https://github.com/dlang/phobos/blob/ad9f87d1b816783bd8c13f461490e68f7fcae20a/Makefile#L400-L401

The Makefiles don't exploit the compiler `-makedeps` switch yet. That would allow only recompiling object files which are dirty (directly or indirectly importing a changed Phobos module).

--
6 days ago
https://issues.dlang.org/show_bug.cgi?id=24584

--- Comment #6 from dlangBugzillaToGithub <robert.schadek@posteo.de> ---
THIS ISSUE HAS BEEN MOVED TO GITHUB

https://github.com/dlang/phobos/issues/10555

DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB

--