GNU bug report logs -
#11791
recheck and compilation error
Previous Next
Reported by: Peter Johansson <trojkan <at> gmail.com>
Date: Tue, 26 Jun 2012 12:04:02 UTC
Severity: normal
Tags: patch
Done: Stefano Lattarini <stefano.lattarini <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 11791 in the body.
You can then email your comments to 11791 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-automake <at> gnu.org
:
bug#11791
; Package
automake
.
(Tue, 26 Jun 2012 12:04:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Peter Johansson <trojkan <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-automake <at> gnu.org
.
(Tue, 26 Jun 2012 12:04:03 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hello automakers,
I've noticed the following behavior from 'make recheck'.
If I run 'make check' and one test fails
$ make check
...
FAIL: foo.test
I modify the test
$ edit foo.c
and rerun the test suite with
$ make recheck -k
foo.c:1: error: parse error before '}' token
make[1]: *** [foo.o] Error 1
make[1]: Target `test-suite.log' not remade because of errors.
make: *** [recheck] Error 2
which is now interrupted as I introduced a compilation error. If I now
try edit the test again and rerun test suite with
$ make recheck -k
I get
# TOTAL: 0
# PASS: 0
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
that is, the failed test is not rerun. I suppose the reason is that it
was never run last time and that there exist no trs file, but this is
IMHO suboptimal and unexpected. I would expect that make recheck also
includes tests that failed due to compilation problems or at least tests
that failed last time they were run.
Please find a script attached illustrating the behavior.
This is with automake 1.12.
Cheers,
Peter
--
Peter Johansson
[recheck.sh (application/x-sh, attachment)]
Information forwarded
to
bug-automake <at> gnu.org
:
bug#11791
; Package
automake
.
(Wed, 27 Jun 2012 13:13:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 11791 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
tags 11791 + patch
thanks
Hi Peter.
On 06/26/2012 01:56 PM, Peter Johansson wrote:
> Hello automakers,
>
> I've noticed the following behavior from 'make recheck'.
>
> If I run 'make check' and one test fails
>
> $ make check
> ...
> FAIL: foo.test
>
> I modify the test
>
> $ edit foo.c
>
> and rerun the test suite with
>
> $ make recheck -k
> foo.c:1: error: parse error before '}' token
> make[1]: *** [foo.o] Error 1
> make[1]: Target `test-suite.log' not remade because of errors.
> make: *** [recheck] Error 2
>
> which is now interrupted as I introduced a compilation error.
> If I now try edit the test again and rerun test suite with
>
> $ make recheck -k
>
> I get
>
> # TOTAL: 0
> # PASS: 0
> # SKIP: 0
> # XFAIL: 0
> # FAIL: 0
> # XPASS: 0
> # ERROR: 0
>
> that is, the failed test is not rerun. I suppose the reason is that it
> was never run last time and that there exist no trs file, but this is
> IMHO suboptimal and unexpected.
> I would expect that make recheck also includes tests that failed due
> to compilation problems or at least tests that failed last time they
> were run.
>
I agree. The attached patch should solve the issue. It's more ugly
than I'd like, but this bug is annoying enough to make such ugliness
acceptable. I will push (to maint) in a couple of days if there are
no objections.
> Please find a script attached illustrating the behavior.
>
> This is with automake 1.12.
>
> Cheers,
> Peter
>
Thanks,
Stefano
[0001-parallel-tests-recheck-behaves-better-in-case-of-com.patch (text/x-diff, attachment)]
Added tag(s) patch.
Request was from
Stefano Lattarini <stefano.lattarini <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Wed, 27 Jun 2012 13:13:02 GMT)
Full text and
rfc822 format available.
Reply sent
to
Stefano Lattarini <stefano.lattarini <at> gmail.com>
:
You have taken responsibility.
(Sat, 30 Jun 2012 18:45:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Peter Johansson <trojkan <at> gmail.com>
:
bug acknowledged by developer.
(Sat, 30 Jun 2012 18:45:02 GMT)
Full text and
rfc822 format available.
Message #15 received at 11791-done <at> debbugs.gnu.org (full text, mbox):
Reference: <http://debbugs.gnu.org/11791>
On 06/27/2012 03:08 PM, Stefano Lattarini wrote:
>
> I agree. The attached patch should solve the issue. It's more ugly
> than I'd like, but this bug is annoying enough to make such ugliness
> acceptable. I will push (to maint) in a couple of days if there are
> no objections.
>
Pushed now. I'm thus closing this bug report.
Regards,
Stefano
Information forwarded
to
bug-automake <at> gnu.org
:
bug#11791
; Package
automake
.
(Sun, 01 Jul 2012 11:34:02 GMT)
Full text and
rfc822 format available.
Message #18 received at 11791 <at> debbugs.gnu.org (full text, mbox):
* lib/am/check.am: Here. The new implementation is shorter, slightly
more efficient (requiring less forks), less brittle in the face of
signals or unexpected interruptions in the make process, and should
also be easier to merge in the 'ng/master' branch (as of now, due to
the difficulties in merging our previous version of the fix in the
'ng/master' codebase, Automake-NG still lacks a fix for bug#11791).
Signed-off-by: Stefano Lattarini <stefano.lattarini <at> gmail.com>
---
I plan to push this by this evening.
Regards,
Stefano
lib/am/check.am | 38 +++++++++++++++-----------------------
1 file changed, 15 insertions(+), 23 deletions(-)
diff --git a/lib/am/check.am b/lib/am/check.am
index 19a803f..e414a90 100644
--- a/lib/am/check.am
+++ b/lib/am/check.am
@@ -240,6 +240,12 @@ am__set_TESTS_bases = \
rm -f $< $@
$(MAKE) $(AM_MAKEFLAGS) $<
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# exand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
$(TEST_SUITE_LOG): $(TEST_LOGS)
@$(am__set_TESTS_bases); \
## Helper shell function, tells whether a path refers to an existing,
@@ -431,11 +437,10 @@ recheck: all %CHECK_DEPS%
bases=`for i in $$bases; do echo $$i; done \
| $(am__list_recheck_tests)` || exit 1; \
log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
## Remove newlines and normalize whitespace. Trailing (and possibly
## leading) whitespace is known to cause segmentation faults on
## Solaris 10 XPG4 make.
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ log_list=`echo $$log_list`; \
## Move the '.log' and '.trs' files associated with the tests to be
## re-run out of the way, so that those tests will be re-run by the
## "make test-suite.log" recursive invocation below.
@@ -445,27 +450,14 @@ recheck: all %CHECK_DEPS%
## we must ensure that any '.log' and '.trs' file referring to such
## test are preserved, so that future "make recheck" invocations
## will still try to re-compile and re-run it (automake bug#11791).
-## The extra contortions below cater to such requirements.
- am_backupdir=.am-recheck; \
- if $(am__make_dryrun); then :; else \
- if test -n "$$trs_list$$log_list"; then \
- { test ! -d $$am_backupdir || rm -rf $$am_backupdir; } \
- && $(MKDIR_P) $$am_backupdir || exit 1; \
- test -z "$$log_list" \
- || mv -f $$log_list $$am_backupdir 2>/dev/null; \
- test -z "$$trs_list" \
- || mv -f $$trs_list $$am_backupdir 2>/dev/null; \
- fi; \
- fi; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
- st=$$?; \
- if $(am__make_dryrun) || test ! -d $$am_backupdir; then :; else \
- for f in $$log_list $$trs_list; do \
- test -f $$f || mv $$am_backupdir/$$f . || exit 1; \
- done; \
- rm -rf $$am_backupdir || exit 1; \
- fi; \
- exit $$st;
+## The tricky recusrive make invocation below should cater to such
+## requirements.
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+## Be sure to exit with the proper exit status (automake bug#9245). See
+## comments in the recipe of $(TEST_SUITE_LOG) above for more information.
+ exit $$?
AM_RECURSIVE_TARGETS += check recheck
--
1.7.9.5
Information forwarded
to
bug-automake <at> gnu.org
:
bug#11791
; Package
automake
.
(Sun, 01 Jul 2012 16:22:01 GMT)
Full text and
rfc822 format available.
Message #21 received at 11791 <at> debbugs.gnu.org (full text, mbox):
On 07/01/2012 01:29 PM, Stefano Lattarini wrote:
> * lib/am/check.am: Here. The new implementation is shorter, slightly
> more efficient (requiring less forks), less brittle in the face of
> signals or unexpected interruptions in the make process, and should
> also be easier to merge in the 'ng/master' branch (as of now, due to
> the difficulties in merging our previous version of the fix in the
> 'ng/master' codebase, Automake-NG still lacks a fix for bug#11791).
>
> Signed-off-by: Stefano Lattarini <stefano.lattarini <at> gmail.com>
> ---
>
> I plan to push this by this evening.
>
Pushed.
Regards,
Stefano
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 30 Jul 2012 11:24:06 GMT)
Full text and
rfc822 format available.
This bug report was last modified 11 years and 286 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.