Thread overview
[Issue 24584] [phobos] `make unittest` should not rerun tests unnecessarily
Jun 12, 2024
Nick Treleaven
Jun 14, 2024
kinke
Jun 14, 2024
Nick Treleaven
Jun 14, 2024
Nick Treleaven
Jun 14, 2024
kinke
June 12, 2024
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, 2024
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, 2024
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, 2024
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, 2024
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).

--
December 01
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

--