[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to avoid stopping the recursive `check` target?

From: Mathieu Lirzin
Subject: Re: How to avoid stopping the recursive `check` target?
Date: Tue, 08 Aug 2017 23:06:37 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)


Philippe Proulx <address@hidden> writes:

> So I put a TESTS variable in a/, b/, and
> c/, and remove the TESTS variable from tests/ Now
> I can go to a/, b/, or c/ and run `make check` to test only specific
> parts of the project. However, since each individual `make check` can
> fail, now the "global" `make check` in tests/ fails as soon as one
> subdirectory fails, which is the expected behaviour of Make.
> My current workaround is to use `make --keep-going check` in tests/, so
> that, as per make(1):
>     Continue as much as possible after an error.  While the target that
>     failed, and those that depend on it, can‐ not be remade, the other
>     dependencies of these targets can be processed all the same.
> This seems to run all the individual `make check` and exit with
> something else than 0 if one of them fails.
> I can also wrap this `make --keep-going check` in a new target, for
> example:
>     test:
>             $(MAKE) $(AM_MAKEFLAGS) --keep-going check
> Now `make test` does what I want in tests/.
> Is there anything more "Automaky" I could do to achieve the same goal?
> Or is using `make --keep-going check` the expected method here if I
> don't want Make to stop as soon as one subdirectory test fails?

I don't know if this is more "Automaky" but for that use case I would
use a non-recursive makefile with custom targets for each subset of
tests.  Here is an untested snippet:

--8<---------------cut here---------------start------------->8---
foo_tests = foo/...
bar_tests = bar/...

TESTS = $(foo_tests) $(bar_tests)

        $(MAKE) $(AM_MAKEFLAGS) TESTS="$(foo_tests)"

        $(MAKE) $(AM_MAKEFLAGS) TESTS="$(bar_tests)"
--8<---------------cut here---------------end--------------->8---

If you really want the ability to run 'make check' from sub
directories, you can create additional makefiles containing

--8<---------------cut here---------------start------------->8---
        $(MAKE) -C .. check-xxx
--8<---------------cut here---------------end--------------->8---

However I would not recommend it.


Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

reply via email to

[Prev in Thread] Current Thread [Next in Thread]