automake-patches
[Top][All Lists]
Advanced

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

[FYI] {test-protocols} test harness: more minor VPATH-rewrite issues


From: Stefano Lattarini
Subject: [FYI] {test-protocols} test harness: more minor VPATH-rewrite issues
Date: Mon, 8 Aug 2011 14:02:18 +0200
User-agent: KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; )

* tests/am/check.am (am__set_TESTS_bases, $(TEST_SUITE_LOGS),
am--redo-logs, recheck, recheck-html): Cosmetic fixlets to
minimize the risk of unwanted VPATH rewrites.
(check-TESTS): Likewise, and normalize trailing whitespace
since we are at it.

Bugs exposed by test cases `check6-p.test' and `check7-p.test'.
---
 ChangeLog                      |   10 ++++++
 lib/Automake/tests/Makefile.in |   62 +++++++++++++++++++-------------------
 lib/am/check.am                |   64 ++++++++++++++++++++--------------------
 tests/Makefile.in              |   62 +++++++++++++++++++-------------------
 4 files changed, 104 insertions(+), 94 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9d34453..232230d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2011-08-08  Stefano Lattarini  <address@hidden>
 
+       test harness: more minor VPATH-rewrite issues
+       * tests/am/check.am (am__set_TESTS_bases, $(TEST_SUITE_LOGS),
+       am--redo-logs, recheck, recheck-html): Cosmetic fixlets to
+       minimize the risk of unwanted VPATH rewrites.
+       (check-TESTS): Likewise, and normalize trailing whitespace
+       since we are at it.
+       Bugs exposed by test cases `check6-p.test' and `check7-p.test'.
+
+2011-08-08  Stefano Lattarini  <address@hidden>
+
        test harness: "make -n check" works correctly with Solaris make
        To avoid some recipes being executed with "make -n", we used the
        trick of issuing recursive make calls not directly with $(MAKE),
diff --git a/lib/Automake/tests/Makefile.in b/lib/Automake/tests/Makefile.in
index 5594390..fff8f6e 100644
--- a/lib/Automake/tests/Makefile.in
+++ b/lib/Automake/tests/Makefile.in
@@ -164,7 +164,7 @@ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
 # See also 'test-harness-vpath-rewrite.test' and 'test-trs-basic.test'.
 am__set_TESTS_bases = \
   bases='$(TEST_LOGS)'; \
-  bases=`for f in $$bases; do echo $$f; done | sed 's/\.log$$//'`; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check check-html recheck recheck-html
@@ -353,29 +353,29 @@ am--redo-logs:
        @rm -f $$redo_logs
        @rm -f $$redo_results
        @$(MAKE) $(AM_MAKEFLAGS) $$redo_logs
-       @st=0; \
-       for b in $$redo_bases; do \
-         for e in trs log; do \
-           if test ! -f $$b.$$e || test ! -r $$b.$$e; then \
-             echo "fatal: making $(TEST_SUITE_LOG): failed to create" \
-                  "$$b.$$e" >&2; \
-             st=1; \
-           fi; \
-         done; \
+       @st=0;  \
+       errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+       for i in $$redo_bases; do \
+         test -f $$i.trs && test -r $$i.trs \
+           || { echo "$$errmsg $$i.trs"; st=1; }; \
+         test -f $$i.log && test -r $$i.log \
+           || { echo "$$errmsg $$i.log"; st=1; }; \
        done; \
        test $$st -eq 0
 
 $(TEST_SUITE_LOG): $(TEST_LOGS)
        @$(am__set_TESTS_bases); \
-       f_ok () { test -f "$$1" && test -r "$$1"; }; \
-       redo_bases=`for b in $$bases; do \
-                     f_ok $$b.trs && f_ok $$b.log || echo $$b; \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
                    done`; \
        if test -n "$$redo_bases"; then \
          redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
          redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-         (export redo_bases redo_logs redo_results \
-            && $(MAKE) am--redo-logs) || exit 1; \
+         redo_bases="$$redo_bases" \
+         redo_logs="$$redo_logs" \
+         redo_results="$$redo_results" \
+           $(MAKE) am--redo-logs || exit 1; \
        else :; fi;
        @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
        ws='[   ]'; \
@@ -429,20 +429,20 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
          echo;                                                         \
          echo ".. contents:: :depth: 2";                               \
          echo;                                                         \
-         for b in $$bases; do                                          \
-           if grep "^$$ws*:copy-in-global-log:$$ws*no$$ws*$$" $$b.trs \
+         for i in $$bases; do                                          \
+           if grep "^$$ws*:copy-in-global-log:$$ws*no$$ws*$$" $$i.trs \
                 >/dev/null; then continue; \
            fi; \
            glob_res=`sed -n -e "s/$$ws*$$//" \
                             -e "s/^$$ws*:global-test-result:$$ws*//p" \
-                       $$b.trs`; \
+                       $$i.trs`; \
            test -n "$$glob_res" || glob_res=RUN; \
-           echo "$$glob_res: $$b" | $(am__rst_section); \
-           if test ! -r $$b.log; then \
-             echo "fatal: making $@: $$b.log is unreadable" >&2; \
+           echo "$$glob_res: $$i" | $(am__rst_section); \
+           if test ! -r $$i.log; then \
+             echo "fatal: making $@: $$i.log is unreadable" >&2; \
              exit 1; \
            fi; \
-           cat $$b.log; echo; \
+           cat $$i.log; echo; \
          done; \
        } >$(TEST_SUITE_LOG).tmp;                                       \
        mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
@@ -471,11 +471,11 @@ check-TESTS:
        @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-       @list='$(TEST_LOGS)';                                           \
-       list=`for f in $$list; do                                       \
-         test .log = $$f || echo $$f;                                  \
-       done | tr '\012\015' '  '`;                                     \
-       list=`echo "$$list" | sed 's/ *$$//'`;                          \
+       @list='$(TEST_LOGS)'; \
+       list=`for i in $$list; do \
+         test .log = $$i || echo $$i; \
+       done | tr '\012\015' '  '`; \
+       list=`echo "$$list" | sed 's/ *$$//'`; \
        $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list"
 
 .log.html:
@@ -506,10 +506,10 @@ recheck recheck-html:
        @ws='[  ]';                                                     \
        target=`echo $@ | sed 's,^re,,'`;                               \
        $(am__set_TESTS_bases);                                         \
-       list=`for b in $$bases; do                                      \
-               test -f $$b.trs || test -f $$b.log || continue;         \
-               grep "^$$ws*:recheck:$$ws*no$$ws*$$" $$b.trs            \
-                 >/dev/null 2>&1 || echo $$b.log;                      \
+       list=`for i in $$bases; do                                      \
+               test -f $$i.trs || test -f $$i.log || continue;         \
+               grep "^$$ws*:recheck:$$ws*no$$ws*$$" $$i.trs            \
+                 >/dev/null 2>&1 || echo $$i.log;                      \
              done | tr '\012\015' '  '`;                               \
        list=`echo "$$list" | sed 's/ *$$//'`;                          \
        $(MAKE) $(AM_MAKEFLAGS) $$target AM_MAKEFLAGS='$(AM_MAKEFLAGS) 
TEST_LOGS="'"$$list"'"'
diff --git a/lib/am/check.am b/lib/am/check.am
index d1daac6..2b58c57 100644
--- a/lib/am/check.am
+++ b/lib/am/check.am
@@ -113,7 +113,7 @@ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
 # See also 'test-harness-vpath-rewrite.test' and 'test-trs-basic.test'.
 am__set_TESTS_bases = \
   bases='$(TEST_LOGS)'; \
-  bases=`for f in $$bases; do echo $$f; done | sed 's/\.log$$//'`; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
 ## Trim away any extra whitespace.  This has already proved useful in
 ## avoiding weird bug on lesser make implementations.
   bases=`echo $$bases`
@@ -136,15 +136,13 @@ am--redo-logs:
 ## Sanity check: each unreadable or non-existent test result file should
 ## has been properly remade at this point, as should the corresponding log
 ## file.
-       @st=0; \
-       for b in $$redo_bases; do \
-         for e in trs log; do \
-           if test ! -f $$b.$$e || test ! -r $$b.$$e; then \
-             echo "fatal: making $(TEST_SUITE_LOG): failed to create" \
-                  "$$b.$$e" >&2; \
-             st=1; \
-           fi; \
-         done; \
+       @st=0;  \
+       errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+       for i in $$redo_bases; do \
+         test -f $$i.trs && test -r $$i.trs \
+           || { echo "$$errmsg $$i.trs"; st=1; }; \
+         test -f $$i.log && test -r $$i.log \
+           || { echo "$$errmsg $$i.log"; st=1; }; \
        done; \
        test $$st -eq 0
 .PHONY: am--redo-logs
@@ -153,14 +151,14 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        @$(am__set_TESTS_bases); \
 ## Helper shell function, tells whether a path refers to an existing,
 ## regular, readable file.
-       f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
 ## We need to ensures that all the required `.trs' and `.log' files will
 ## be present and readable.  The direct dependencies of $(TEST_SUITE_LOG)
 ## only ensure that all the `.log' files exists; they don't ensure that
 ## the `.log' files are readable, and worse, they don't ensure that the
 ## `.trs' files even exist.
-       redo_bases=`for b in $$bases; do \
-                     f_ok $$b.trs && f_ok $$b.log || echo $$b; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
                    done`; \
        if test -n "$$redo_bases"; then \
 ## Uh-oh, either some `.log' files were unreadable, or some `.trs' files
@@ -168,9 +166,11 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
 ## tests in order to re-create them.
          redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
          redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-## The export variables are needed by the helper hook.
-         (export redo_bases redo_logs redo_results \
-            && $(MAKE) am--redo-logs) || exit 1; \
+## The exported variables are needed by the helper hook.
+         redo_bases="$$redo_bases" \
+         redo_logs="$$redo_logs" \
+         redo_results="$$redo_results" \
+           $(MAKE) am--redo-logs || exit 1; \
        else :; fi;
 ## We need a new subshell to work portably with "make -n", since the
 ## previous part of the recipe contained a $(MAKE) invocation.
@@ -240,27 +240,27 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
          echo;                                                         \
          echo ".. contents:: :depth: 2";                               \
          echo;                                                         \
-         for b in $$bases; do                                          \
+         for i in $$bases; do                                          \
 ## FIXME: one fork per test -- this is horrendously inefficient!
-           if grep "^$$ws*:copy-in-global-log:$$ws*no$$ws*$$" $$b.trs \
+           if grep "^$$ws*:copy-in-global-log:$$ws*no$$ws*$$" $$i.trs \
                 >/dev/null; then continue; \
            fi; \
 ## Get the declared "global result" of the test.
 ## FIXME: yet another one fork per test here!
            glob_res=`sed -n -e "s/$$ws*$$//" \
                             -e "s/^$$ws*:global-test-result:$$ws*//p" \
-                       $$b.trs`; \
+                       $$i.trs`; \
 ## If no global result is explicitly declared, we'll merely mark the
 ## test as "RUN" in the global test log.
            test -n "$$glob_res" || glob_res=RUN; \
 ## Write the name and result of the test as an RST section title.
-           echo "$$glob_res: $$b" | $(am__rst_section); \
+           echo "$$glob_res: $$i" | $(am__rst_section); \
 ## If we should have remade any unreadable `.log', above.
-           if test ! -r $$b.log; then \
-             echo "fatal: making $@: $$b.log is unreadable" >&2; \
+           if test ! -r $$i.log; then \
+             echo "fatal: making $@: $$i.log is unreadable" >&2; \
              exit 1; \
            fi; \
-           cat $$b.log; echo; \
+           cat $$i.log; echo; \
          done; \
        } >$(TEST_SUITE_LOG).tmp;                                       \
        mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
@@ -309,13 +309,13 @@ check-TESTS:
 ## 3.80 to erroneously expand $(TESTS_LOGS) to `foo.log .log'.
 ## Work around this bug.
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-       @list='$(TEST_LOGS)';                                           \
-       list=`for f in $$list; do                                       \
-         test .log = $$f || echo $$f;                                  \
-       done | tr '\012\015' '  '`;                                     \
+       @list='$(TEST_LOGS)'; \
+       list=`for i in $$list; do \
+         test .log = $$i || echo $$i; \
+       done | tr '\012\015' '  '`; \
 ## This apparently useless munging helps to avoid a nasty bug (a
 ## segmentation fault!) on Solaris XPG4 make.
-       list=`echo "$$list" | sed 's/ *$$//'`;                          \
+       list=`echo "$$list" | sed 's/ *$$//'`; \
        $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list"
 
 AM_RECURSIVE_TARGETS += check
@@ -363,13 +363,13 @@ recheck recheck-html:
        @ws='[  ]';                                                     \
        target=`echo $@ | sed 's,^re,,'`;                               \
        $(am__set_TESTS_bases);                                         \
-       list=`for b in $$bases; do                                      \
+       list=`for i in $$bases; do                                      \
 ## Skip tests that haven't been run, but recover gracefully from deleted
 ## `.trs' files.
-               test -f $$b.trs || test -f $$b.log || continue;         \
+               test -f $$i.trs || test -f $$i.log || continue;         \
 ## FIXME: one fork per test -- this is horrendously inefficient!
-               grep "^$$ws*:recheck:$$ws*no$$ws*$$" $$b.trs            \
-                 >/dev/null 2>&1 || echo $$b.log;                      \
+               grep "^$$ws*:recheck:$$ws*no$$ws*$$" $$i.trs            \
+                 >/dev/null 2>&1 || echo $$i.log;                      \
              done | tr '\012\015' '  '`;                               \
 ## This apparently useless munging helps to avoid a nasty bug (a
 ## segmentation fault!) on Solaris XPG4 make.
diff --git a/tests/Makefile.in b/tests/Makefile.in
index c35e270..3573bb0 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -169,7 +169,7 @@ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
 # See also 'test-harness-vpath-rewrite.test' and 'test-trs-basic.test'.
 am__set_TESTS_bases = \
   bases='$(TEST_LOGS)'; \
-  bases=`for f in $$bases; do echo $$f; done | sed 's/\.log$$//'`; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check check-html recheck recheck-html
@@ -1507,29 +1507,29 @@ am--redo-logs:
        @rm -f $$redo_logs
        @rm -f $$redo_results
        @$(MAKE) $(AM_MAKEFLAGS) $$redo_logs
-       @st=0; \
-       for b in $$redo_bases; do \
-         for e in trs log; do \
-           if test ! -f $$b.$$e || test ! -r $$b.$$e; then \
-             echo "fatal: making $(TEST_SUITE_LOG): failed to create" \
-                  "$$b.$$e" >&2; \
-             st=1; \
-           fi; \
-         done; \
+       @st=0;  \
+       errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+       for i in $$redo_bases; do \
+         test -f $$i.trs && test -r $$i.trs \
+           || { echo "$$errmsg $$i.trs"; st=1; }; \
+         test -f $$i.log && test -r $$i.log \
+           || { echo "$$errmsg $$i.log"; st=1; }; \
        done; \
        test $$st -eq 0
 
 $(TEST_SUITE_LOG): $(TEST_LOGS)
        @$(am__set_TESTS_bases); \
-       f_ok () { test -f "$$1" && test -r "$$1"; }; \
-       redo_bases=`for b in $$bases; do \
-                     f_ok $$b.trs && f_ok $$b.log || echo $$b; \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
                    done`; \
        if test -n "$$redo_bases"; then \
          redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
          redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-         (export redo_bases redo_logs redo_results \
-            && $(MAKE) am--redo-logs) || exit 1; \
+         redo_bases="$$redo_bases" \
+         redo_logs="$$redo_logs" \
+         redo_results="$$redo_results" \
+           $(MAKE) am--redo-logs || exit 1; \
        else :; fi;
        @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
        ws='[   ]'; \
@@ -1583,20 +1583,20 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
          echo;                                                         \
          echo ".. contents:: :depth: 2";                               \
          echo;                                                         \
-         for b in $$bases; do                                          \
-           if grep "^$$ws*:copy-in-global-log:$$ws*no$$ws*$$" $$b.trs \
+         for i in $$bases; do                                          \
+           if grep "^$$ws*:copy-in-global-log:$$ws*no$$ws*$$" $$i.trs \
                 >/dev/null; then continue; \
            fi; \
            glob_res=`sed -n -e "s/$$ws*$$//" \
                             -e "s/^$$ws*:global-test-result:$$ws*//p" \
-                       $$b.trs`; \
+                       $$i.trs`; \
            test -n "$$glob_res" || glob_res=RUN; \
-           echo "$$glob_res: $$b" | $(am__rst_section); \
-           if test ! -r $$b.log; then \
-             echo "fatal: making $@: $$b.log is unreadable" >&2; \
+           echo "$$glob_res: $$i" | $(am__rst_section); \
+           if test ! -r $$i.log; then \
+             echo "fatal: making $@: $$i.log is unreadable" >&2; \
              exit 1; \
            fi; \
-           cat $$b.log; echo; \
+           cat $$i.log; echo; \
          done; \
        } >$(TEST_SUITE_LOG).tmp;                                       \
        mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
@@ -1625,11 +1625,11 @@ check-TESTS:
        @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-       @list='$(TEST_LOGS)';                                           \
-       list=`for f in $$list; do                                       \
-         test .log = $$f || echo $$f;                                  \
-       done | tr '\012\015' '  '`;                                     \
-       list=`echo "$$list" | sed 's/ *$$//'`;                          \
+       @list='$(TEST_LOGS)'; \
+       list=`for i in $$list; do \
+         test .log = $$i || echo $$i; \
+       done | tr '\012\015' '  '`; \
+       list=`echo "$$list" | sed 's/ *$$//'`; \
        $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list"
 
 .log.html:
@@ -1660,10 +1660,10 @@ recheck recheck-html:
        @ws='[  ]';                                                     \
        target=`echo $@ | sed 's,^re,,'`;                               \
        $(am__set_TESTS_bases);                                         \
-       list=`for b in $$bases; do                                      \
-               test -f $$b.trs || test -f $$b.log || continue;         \
-               grep "^$$ws*:recheck:$$ws*no$$ws*$$" $$b.trs            \
-                 >/dev/null 2>&1 || echo $$b.log;                      \
+       list=`for i in $$bases; do                                      \
+               test -f $$i.trs || test -f $$i.log || continue;         \
+               grep "^$$ws*:recheck:$$ws*no$$ws*$$" $$i.trs            \
+                 >/dev/null 2>&1 || echo $$i.log;                      \
              done | tr '\012\015' '  '`;                               \
        list=`echo "$$list" | sed 's/ *$$//'`;                          \
        $(MAKE) $(AM_MAKEFLAGS) $$target AM_MAKEFLAGS='$(AM_MAKEFLAGS) 
TEST_LOGS="'"$$list"'"'
-- 
1.7.2.3




reply via email to

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