[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to avoid stopping the recursive `check` target?
From: |
Philippe Proulx |
Subject: |
Re: How to avoid stopping the recursive `check` target? |
Date: |
Tue, 8 Aug 2017 17:29:38 -0400 |
On Tue, Aug 8, 2017 at 5:06 PM, Mathieu Lirzin <address@hidden> wrote:
>
> 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:
Not a bad idea indeed.
>
> --8<---------------cut here---------------start------------->8---
> foo_tests = foo/...
> bar_tests = bar/...
>
> TESTS = $(foo_tests) $(bar_tests)
>
> check-foo:
> $(MAKE) $(AM_MAKEFLAGS) TESTS="$(foo_tests)"
I guess you mean:
$(MAKE) $(AM_MAKEFLAGS) TESTS="$(foo_tests)" check
>
> check-bar:
> $(MAKE) $(AM_MAKEFLAGS) TESTS="$(bar_tests)"
Same here?
Thank you,
Phil
> --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