automake
[Top][All Lists]
Advanced

[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)

Hello,

Philippe Proulx <address@hidden> writes:

> So I put a TESTS variable in a/Makefile.am, b/Makefile.am, and
> c/Makefile.am, and remove the TESTS variable from tests/Makefile.am. 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)

check-foo:
        $(MAKE) $(AM_MAKEFLAGS) TESTS="$(foo_tests)"

check-bar:
        $(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---
check:
        $(MAKE) -C .. check-xxx
--8<---------------cut here---------------end--------------->8---

However I would not recommend it.

HTH,

-- 
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]