Subject: bug#27186: check-TESTS has dependency on check_PROGRAMS etc

From: Nick Brown <[email-masked]>
Date: Mon, 5 Jun 2017 10:29:55 +0000

On Mon, 2017-06-05 at 00:45 +0200, Mathieu Lirzin wrote:
> Hello Nick,
> 
> Nick Brown <[email-masked]> writes:
> 
> > Something like: 
> >    ./autogen.sh 
> >    ./configure 
> >    make check-TESTS 
> > will fail, unless 'make check' is run before 'make check-TESTS'
> > for 
> > Makefile.am snippet like: 
> > 
> > check_PROGRAMS = foo 
> > check_SCRIPTS = run_foo_wrapper.sh 
> > TESTS = $(check_SCRIPTS) 
> > --- 
> >  lib/am/check.am | 3 ++- 
> >  1 file changed, 2 insertions(+), 1 deletion(-) 
> > 
> > diff --git a/lib/am/check.am b/lib/am/check.am 
> > index 7bcffd53faa8..15cfc7c64598 100644 
> > --- a/lib/am/check.am 
> > +++ b/lib/am/check.am 
> > @@ -401,7 +401,8 @@ RECHECK_LOGS = $(TEST_LOGS) 
> >  ## Running all tests, or rechecking failures. ## 
> >  ## ------------------------------------------ ## 
> >   
> > -check-TESTS: 
> > +## Running tests depend on $(check_SCRIPTS), $(check_PROGRAMS),
> > etc. 
> > +check-TESTS: %CHECK_DEPS% 
> >  	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm
> > -f $$list 
> >  	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm
> > -f $$list 
> >  ## We always have to remove $(TEST_SUITE_LOG), to ensure its rule
> > is run 
> > -- 
> 
> I must confess I have never used the 'check-TESTS' target myself.  In
> fact Automake current manual doesn't even mention it.  So it is not
> clear to me how it is expected to work, and what its role compare to
> the
> 'check' and 'recheck' target.  Since you seems to use it, maybe you
> can
> give me more background on that target?

As far as I've been able to determine it's purpose is to actually
execute the the test scripts, and is used by the 'check' target for
this.
I don't use it myself directly, but bumped into this issue when using
the the AX_VALGRIND automake macro that uses this target:
https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html

> Thanks for your patch.