automake-patches
[Top][All Lists]
Advanced

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

[PATCH 4/4] {testsuite-work} tests: better respect of TAP usage in wrapp


From: Stefano Lattarini
Subject: [PATCH 4/4] {testsuite-work} tests: better respect of TAP usage in wrapped tests
Date: Mon, 29 Aug 2011 17:26:03 +0200

* tests/gen-wrap-tests: Partial rewrite to take into account the
possibility that the wrapped test uses the TAP protocol.  This
complicates the code quite a bit, but is essential to ensure real
correctness in all the wrapped scripts.
* tests/wrap-tests.sh: Update, and add few more sanity checks.
---
 ChangeLog            |    9 ++
 tests/Makefile.in    |  219 +++++++++++++++++++++++++++++++-------------------
 tests/gen-wrap-tests |   88 +++++++++++++++-----
 tests/wrap-tests.sh  |   53 ++++++-------
 4 files changed, 235 insertions(+), 134 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index be5d736..4ca10ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2011-08-29  Stefano Lattarini  <address@hidden>
 
+       tests: better respect of TAP usage in wrapped tests
+       * tests/gen-wrap-tests: Partial rewrite to take into account the
+       possibility that the wrapped test uses the TAP protocol.  This
+       complicates the code quite a bit, but is essential to ensure real
+       correctness in all the wrapped scripts.
+       * tests/wrap-tests.sh: Update, and add few more sanity checks.
+
+2011-08-29  Stefano Lattarini  <address@hidden>
+
        tests: use both perl and awk implementations for tests on TAP
        * tests/gen-wrap-tests (get_list_for_pltap): New function, gets
        the list of tests that check the Automake TAP support.
diff --git a/tests/Makefile.in b/tests/Makefile.in
index e3da364..79b68bf 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -184,18 +184,18 @@ TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) 
$(AM_TEST_LOG_FLAGS) \
 am__test_logs3 = $(am__test_logs2:.tap.log=.log)
 TAP_LOG_COMPILE = $(TAP_LOG_COMPILER) $(AM_TAP_LOG_FLAGS) \
        $(TAP_LOG_FLAGS)
-am__test_logs4 = $(am__test_logs3:.ptest.log=.log)
-PTEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/lib/test-driver
-PTEST_LOG_COMPILE = $(PTEST_LOG_COMPILER) $(AM_PTEST_LOG_FLAGS) \
-       $(PTEST_LOG_FLAGS)
-am__test_logs5 = $(am__test_logs4:.shtst.log=.log)
-SHTST_LOG_DRIVER = $(SHELL) $(top_srcdir)/lib/test-driver
-SHTST_LOG_COMPILE = $(SHTST_LOG_COMPILER) $(AM_SHTST_LOG_FLAGS) \
-       $(SHTST_LOG_FLAGS)
-TEST_LOGS = $(am__test_logs5:.pltap.log=.log)
-PLTAP_LOG_DRIVER = $(SHELL) $(top_srcdir)/lib/test-driver
-PLTAP_LOG_COMPILE = $(PLTAP_LOG_COMPILER) $(AM_PLTAP_LOG_FLAGS) \
-       $(PLTAP_LOG_FLAGS)
+am__test_logs4 = $(am__test_logs3:.test_pt.log=.log)
+TEST_PT_LOG_COMPILE = $(TEST_PT_LOG_COMPILER) $(AM_TEST_PT_LOG_FLAGS) \
+       $(TEST_PT_LOG_FLAGS)
+am__test_logs5 = $(am__test_logs4:.test_cs.log=.log)
+TEST_CS_LOG_COMPILE = $(TEST_CS_LOG_COMPILER) $(AM_TEST_CS_LOG_FLAGS) \
+       $(TEST_CS_LOG_FLAGS)
+am__test_logs6 = $(am__test_logs5:.test_pltap.log=.log)
+TEST_PLTAP_LOG_COMPILE = $(TEST_PLTAP_LOG_COMPILER) \
+       $(AM_TEST_PLTAP_LOG_FLAGS) $(TEST_PLTAP_LOG_FLAGS)
+TEST_LOGS = $(am__test_logs6:.tap_pltap.log=.log)
+TAP_PLTAP_LOG_COMPILE = $(TAP_PLTAP_LOG_COMPILER) \
+       $(AM_TAP_PLTAP_LOG_FLAGS) $(TAP_PLTAP_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -298,7 +298,7 @@ top_srcdir = @top_srcdir@
 
 # Run the tests with the shell detected at configure time.
 LOG_COMPILER = $(SHELL)
-TEST_EXTENSIONS = .test .tap .ptest .shtst .pltap
+TEST_EXTENSIONS = .test .tap .test_pt .test_cs .test_pltap .tap_pltap
 TEST_LOG_COMPILER = $(LOG_COMPILER)
 TAP_LOG_COMPILER = $(LOG_COMPILER)
 TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/lib/tap-driver.sh
@@ -1457,62 +1457,76 @@ tap-recheck.test \
 tap-summary.test \
 tap-summary-color.test
 
-wrap_TESTS = check-concurrency-bug9245-w.ptest \
-       check-exported-srcdir-w.ptest check-fd-redirect-w.ptest \
-       check-subst-prog-w.ptest check-subst-w.ptest \
-       check-tests-in-builddir-w.ptest check-w.ptest check11-w.ptest \
-       check12-w.ptest check2-w.ptest check3-w.ptest check4-w.ptest \
-       check5-w.ptest check6-w.ptest check7-w.ptest check8-w.ptest \
-       color-w.ptest color2-w.ptest comment9-w.ptest dejagnu-w.ptest \
-       exeext4-w.ptest maken3-w.ptest maken4-w.ptest \
-       posixsubst-tests-w.ptest tests-environment-w.ptest \
-       ar-lib-w.shtst compile-w.shtst compile2-w.shtst \
-       compile3-w.shtst compile4-w.shtst compile5-w.shtst \
-       compile6-w.shtst instsh2-w.shtst instsh3-w.shtst \
-       mdate5-w.shtst mdate6-w.shtst missing-w.shtst missing2-w.shtst \
-       missing3-w.shtst missing5-w.shtst mkinst3-w.shtst \
-       tap-ambiguous-directive-w.pltap tap-autonumber-w.pltap \
-       tap-bad-prog-w.pltap tap-bailout-and-logging-w.pltap \
-       tap-bailout-suppress-badexit-w.pltap \
-       tap-bailout-suppress-later-diagnostic-w.pltap \
-       tap-bailout-suppress-later-errors-w.pltap tap-bailout-w.pltap \
-       tap-basic-w.pltap tap-color-w.pltap tap-deps-w.pltap \
-       tap-diagnostic-custom-w.pltap tap-diagnostic-w.pltap \
-       tap-doc-w.pltap tap-driver-stderr-w.pltap \
-       tap-empty-diagnostic-w.pltap tap-empty-w.pltap \
-       tap-escape-directive-2-w.pltap tap-escape-directive-w.pltap \
-       tap-exit-w.pltap tap-fancy-w.pltap tap-fancy2-w.pltap \
-       tap-global-log-w.pltap tap-global-result-w.pltap \
-       tap-html-w.pltap tap-log-w.pltap \
-       tap-merge-stdout-stderr-w.pltap \
-       tap-missing-plan-and-bad-exit-w.pltap tap-more-w.pltap \
-       tap-more2-w.pltap tap-msg0-bailout-w.pltap \
-       tap-msg0-directive-w.pltap tap-msg0-misc-w.pltap \
-       tap-msg0-planskip-w.pltap tap-msg0-result-w.pltap \
-       tap-negative-numbers-w.pltap tap-no-disable-hard-error-w.pltap \
-       tap-no-merge-stdout-stderr-w.pltap \
-       tap-no-spurious-numbers-w.pltap \
-       tap-no-spurious-summary-w.pltap tap-no-spurious-w.pltap \
-       tap-not-ok-skip-w.pltap tap-number-wordboundary-w.pltap \
-       tap-numbers-leading-zero-w.pltap \
-       tap-numeric-description-w.pltap tap-out-of-order-w.pltap \
-       tap-passthrough-exit-w.pltap tap-passthrough-w.pltap \
-       tap-plan-corner-w.pltap tap-plan-errors-w.pltap \
-       tap-plan-leading-zero-w.pltap tap-plan-malformed-w.pltap \
-       tap-plan-middle-w.pltap tap-plan-whitespace-w.pltap \
-       tap-plan-w.pltap tap-planskip-and-logging-w.pltap \
-       tap-planskip-badexit-w.pltap tap-planskip-bailout-w.pltap \
-       tap-planskip-case-insensitive-w.pltap \
-       tap-planskip-late-w.pltap tap-planskip-later-errors-w.pltap \
-       tap-planskip-unplanned-corner-w.pltap \
-       tap-planskip-unplanned-w.pltap tap-planskip-whitespace-w.pltap \
-       tap-planskip-w.pltap tap-realtime-w.pltap \
-       tap-recheck-logs-w.pltap tap-recheck-w.pltap \
-       tap-result-comment-w.pltap tap-signal-w.pltap \
-       tap-test-number-0-w.pltap tap-todo-skip-together-w.pltap \
-       tap-todo-skip-whitespace-w.pltap tap-todo-skip-w.pltap \
-       tap-unplanned-w.pltap tap-whitespace-normalization-w.pltap \
-       tap-with-and-without-number-w.pltap tap-xfail-tests-w.pltap
+wrap_TESTS = check-concurrency-bug9245-w.test_pt \
+       check-exported-srcdir-w.test_pt check-fd-redirect-w.test_pt \
+       check-subst-prog-w.test_pt check-subst-w.test_pt \
+       check-tests-in-builddir-w.test_pt check-w.test_pt \
+       check11-w.test_pt check12-w.test_pt check2-w.test_pt \
+       check3-w.test_pt check4-w.test_pt check5-w.test_pt \
+       check6-w.test_pt check7-w.test_pt check8-w.test_pt \
+       color-w.test_pt color2-w.test_pt comment9-w.test_pt \
+       dejagnu-w.test_pt exeext4-w.test_pt maken3-w.test_pt \
+       maken4-w.test_pt posixsubst-tests-w.test_pt \
+       tests-environment-w.test_pt ar-lib-w.test_cs compile-w.test_cs \
+       compile2-w.test_cs compile3-w.test_cs compile4-w.test_cs \
+       compile5-w.test_cs compile6-w.test_cs instsh2-w.test_cs \
+       instsh3-w.test_cs mdate5-w.test_cs mdate6-w.test_cs \
+       missing-w.test_cs missing2-w.test_cs missing3-w.test_cs \
+       missing5-w.test_cs mkinst3-w.test_cs \
+       tap-ambiguous-directive-w.test_pltap \
+       tap-autonumber-w.test_pltap tap-bad-prog-w.tap_pltap \
+       tap-bailout-and-logging-w.test_pltap \
+       tap-bailout-suppress-badexit-w.test_pltap \
+       tap-bailout-suppress-later-diagnostic-w.test_pltap \
+       tap-bailout-suppress-later-errors-w.test_pltap \
+       tap-bailout-w.test_pltap tap-basic-w.test_pltap \
+       tap-color-w.test_pltap tap-deps-w.test_pltap \
+       tap-diagnostic-custom-w.test_pltap tap-diagnostic-w.test_pltap \
+       tap-doc-w.test_pltap tap-driver-stderr-w.test_pltap \
+       tap-empty-diagnostic-w.test_pltap tap-empty-w.test_pltap \
+       tap-escape-directive-2-w.test_pltap \
+       tap-escape-directive-w.test_pltap tap-exit-w.test_pltap \
+       tap-fancy-w.test_pltap tap-fancy2-w.test_pltap \
+       tap-global-log-w.test_pltap tap-global-result-w.test_pltap \
+       tap-html-w.test_pltap tap-log-w.test_pltap \
+       tap-merge-stdout-stderr-w.test_pltap \
+       tap-missing-plan-and-bad-exit-w.test_pltap \
+       tap-more-w.test_pltap tap-more2-w.test_pltap \
+       tap-msg0-bailout-w.test_pltap tap-msg0-directive-w.test_pltap \
+       tap-msg0-misc-w.test_pltap tap-msg0-planskip-w.test_pltap \
+       tap-msg0-result-w.test_pltap tap-negative-numbers-w.test_pltap \
+       tap-no-disable-hard-error-w.test_pltap \
+       tap-no-merge-stdout-stderr-w.test_pltap \
+       tap-no-spurious-numbers-w.test_pltap \
+       tap-no-spurious-summary-w.test_pltap \
+       tap-no-spurious-w.test_pltap tap-not-ok-skip-w.test_pltap \
+       tap-number-wordboundary-w.test_pltap \
+       tap-numbers-leading-zero-w.test_pltap \
+       tap-numeric-description-w.test_pltap \
+       tap-out-of-order-w.test_pltap \
+       tap-passthrough-exit-w.test_pltap tap-passthrough-w.test_pltap \
+       tap-plan-corner-w.test_pltap tap-plan-errors-w.test_pltap \
+       tap-plan-leading-zero-w.test_pltap \
+       tap-plan-malformed-w.test_pltap tap-plan-middle-w.test_pltap \
+       tap-plan-whitespace-w.test_pltap tap-plan-w.test_pltap \
+       tap-planskip-and-logging-w.test_pltap \
+       tap-planskip-badexit-w.test_pltap \
+       tap-planskip-bailout-w.test_pltap \
+       tap-planskip-case-insensitive-w.test_pltap \
+       tap-planskip-late-w.test_pltap \
+       tap-planskip-later-errors-w.test_pltap \
+       tap-planskip-unplanned-corner-w.test_pltap \
+       tap-planskip-unplanned-w.test_pltap \
+       tap-planskip-whitespace-w.test_pltap tap-planskip-w.test_pltap \
+       tap-realtime-w.test_pltap tap-recheck-logs-w.test_pltap \
+       tap-recheck-w.test_pltap tap-result-comment-w.test_pltap \
+       tap-signal-w.test_pltap tap-test-number-0-w.test_pltap \
+       tap-todo-skip-together-w.test_pltap \
+       tap-todo-skip-whitespace-w.test_pltap \
+       tap-todo-skip-w.test_pltap tap-unplanned-w.test_pltap \
+       tap-whitespace-normalization-w.test_pltap \
+       tap-with-and-without-number-w.test_pltap \
+       tap-xfail-tests-w.test_pltap
 wrap_LOGS = check-concurrency-bug9245-w.log \
        check-exported-srcdir-w.log check-fd-redirect-w.log \
        check-subst-prog-w.log check-subst-w.log \
@@ -1563,15 +1577,47 @@ wrap_LOGS = check-concurrency-bug9245-w.log \
        tap-todo-skip-whitespace-w.log tap-todo-skip-w.log \
        tap-unplanned-w.log tap-whitespace-normalization-w.log \
        tap-with-and-without-number-w.log tap-xfail-tests-w.log
-PTEST_LOG_COMPILER = \
+TEST_PT_LOG_DRIVER = \
+  $(TEST_LOG_DRIVER)
+
+AM_TEST_PT_LOG_DRIVER_FLAGS = \
+  $(AM_TEST_LOG_DRIVER_FLAGS) \
+  $(TEST_LOG_DRIVER_FLAGS)
+
+TEST_PT_LOG_COMPILER = \
   $(LOG_COMPILER) $(srcdir)/wrap-tests.sh \
-  --type ptest --define parallel_tests "yes"
+  --type pt --define parallel_tests "yes"
+
+TEST_CS_LOG_DRIVER = \
+  $(TEST_LOG_DRIVER)
+
+AM_TEST_CS_LOG_DRIVER_FLAGS = \
+  $(AM_TEST_LOG_DRIVER_FLAGS) \
+  $(TEST_LOG_DRIVER_FLAGS)
 
-SHTST_LOG_COMPILER = \
+TEST_CS_LOG_COMPILER = \
   $(LOG_COMPILER) $(srcdir)/wrap-tests.sh \
-  --type shtst --define test_prefer_config_shell "yes"
+  --type cs --define test_prefer_config_shell "yes"
 
-PLTAP_LOG_COMPILER = \
+TEST_PLTAP_LOG_DRIVER = \
+  $(TEST_LOG_DRIVER)
+
+AM_TEST_PLTAP_LOG_DRIVER_FLAGS = \
+  $(AM_TEST_LOG_DRIVER_FLAGS) \
+  $(TEST_LOG_DRIVER_FLAGS)
+
+TEST_PLTAP_LOG_COMPILER = \
+  $(LOG_COMPILER) $(srcdir)/wrap-tests.sh \
+  --type pltap --define am_tap_implementation "perl"
+
+TAP_PLTAP_LOG_DRIVER = \
+  $(TAP_LOG_DRIVER)
+
+AM_TAP_PLTAP_LOG_DRIVER_FLAGS = \
+  $(AM_TAP_LOG_DRIVER_FLAGS) \
+  $(TAP_LOG_DRIVER_FLAGS)
+
+TAP_PLTAP_LOG_COMPILER = \
   $(LOG_COMPILER) $(srcdir)/wrap-tests.sh \
   --type pltap --define am_tap_implementation "perl"
 
@@ -1583,7 +1629,7 @@ am__tdf = diff-in-tests-lists.tmp
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .html .log .pltap .ptest .shtst .tap .test .trs
+.SUFFIXES: .html .log .tap .tap_pltap .test .test_cs .test_pltap .test_pt .trs
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/list-of-tests.mk 
$(srcdir)/wrap-tests.am $(top_srcdir)/CheckListOfTests.am $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -1819,20 +1865,25 @@ recheck recheck-html:
        --log-file '$*.log' --trs-file '$*.trs' \
        $(am__common_driver_flags) $(AM_TAP_LOG_DRIVER_FLAGS) 
$(TAP_LOG_DRIVER_FLAGS) -- $(TAP_LOG_COMPILE) "$$tst" \
        $(AM_TESTS_FD_REDIRECT)
-.ptest.log:
-       @p='$<'; $(am__check_pre) $(PTEST_LOG_DRIVER) --test-name "$$f" \
+.test_pt.log:
+       @p='$<'; $(am__check_pre) $(TEST_PT_LOG_DRIVER) --test-name "$$f" \
+       --log-file '$*.log' --trs-file '$*.trs' \
+       $(am__common_driver_flags) $(AM_TEST_PT_LOG_DRIVER_FLAGS) 
$(TEST_PT_LOG_DRIVER_FLAGS) -- $(TEST_PT_LOG_COMPILE) "$$tst" \
+       $(AM_TESTS_FD_REDIRECT)
+.test_cs.log:
+       @p='$<'; $(am__check_pre) $(TEST_CS_LOG_DRIVER) --test-name "$$f" \
        --log-file '$*.log' --trs-file '$*.trs' \
-       $(am__common_driver_flags) $(AM_PTEST_LOG_DRIVER_FLAGS) 
$(PTEST_LOG_DRIVER_FLAGS) -- $(PTEST_LOG_COMPILE) "$$tst" \
+       $(am__common_driver_flags) $(AM_TEST_CS_LOG_DRIVER_FLAGS) 
$(TEST_CS_LOG_DRIVER_FLAGS) -- $(TEST_CS_LOG_COMPILE) "$$tst" \
        $(AM_TESTS_FD_REDIRECT)
-.shtst.log:
-       @p='$<'; $(am__check_pre) $(SHTST_LOG_DRIVER) --test-name "$$f" \
+.test_pltap.log:
+       @p='$<'; $(am__check_pre) $(TEST_PLTAP_LOG_DRIVER) --test-name "$$f" \
        --log-file '$*.log' --trs-file '$*.trs' \
-       $(am__common_driver_flags) $(AM_SHTST_LOG_DRIVER_FLAGS) 
$(SHTST_LOG_DRIVER_FLAGS) -- $(SHTST_LOG_COMPILE) "$$tst" \
+       $(am__common_driver_flags) $(AM_TEST_PLTAP_LOG_DRIVER_FLAGS) 
$(TEST_PLTAP_LOG_DRIVER_FLAGS) -- $(TEST_PLTAP_LOG_COMPILE) "$$tst" \
        $(AM_TESTS_FD_REDIRECT)
-.pltap.log:
-       @p='$<'; $(am__check_pre) $(PLTAP_LOG_DRIVER) --test-name "$$f" \
+.tap_pltap.log:
+       @p='$<'; $(am__check_pre) $(TAP_PLTAP_LOG_DRIVER) --test-name "$$f" \
        --log-file '$*.log' --trs-file '$*.trs' \
-       $(am__common_driver_flags) $(AM_PLTAP_LOG_DRIVER_FLAGS) 
$(PLTAP_LOG_DRIVER_FLAGS) -- $(PLTAP_LOG_COMPILE) "$$tst" \
+       $(am__common_driver_flags) $(AM_TAP_PLTAP_LOG_DRIVER_FLAGS) 
$(TAP_PLTAP_LOG_DRIVER_FLAGS) -- $(TAP_PLTAP_LOG_COMPILE) "$$tst" \
        $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
diff --git a/tests/gen-wrap-tests b/tests/gen-wrap-tests
index f59a153..f794fb0 100755
--- a/tests/gen-wrap-tests
+++ b/tests/gen-wrap-tests
@@ -19,7 +19,10 @@
 set -e
 set -u
 
-tests=`${MAKE-make} -s -f list-of-tests.mk print-list-of-tests` \
+MAKE=${MAKE-make}
+PERL=${PERL-perl}
+
+tests=`$MAKE -s -f list-of-tests.mk print-list-of-tests` \
   && tests=`echo $tests` && test -n "$tests" \
   || { echo "$0: cannot get list of tests" >&2; exit 1; }
 
@@ -48,7 +51,7 @@ wrapper_type_list="" # Avoid interferences from the 
environment.
 # support, or is not meant to run with, the `parallel-tests' option, and
 # forcing it to do so in the sibling would likely cause a spurious failure.
 #
-get_list_for_ptest ()
+get_list_for_pt ()
 {
   { grep -l '^TESTS *=' $*; grep -l ' TESTS *=' $*; } \
     | LC_ALL=C sort -u \
@@ -58,8 +61,8 @@ get_list_for_ptest ()
         echo $tst
       done
 }
-defines_for_ptest='--define parallel_tests "yes"'
-add_wrapper_type "ptest"
+defines_for_pt='--define parallel_tests "yes"'
+add_wrapper_type "pt"
 
 #
 # For each test script in the Automake testsuite that tests features of
@@ -80,7 +83,7 @@ add_wrapper_type "ptest"
 # to use, $SHELL to run the script under testing, and forcing it to do so
 # in the sibling would likely cause a spurious failure.
 #
-get_list_for_shtst ()
+get_list_for_cs ()
 {
   { grep -l '^get_shell_script ' $*; grep -l ' get_shell_script ' $*; } \
     | LC_ALL=C sort -u \
@@ -88,8 +91,8 @@ get_list_for_shtst ()
         grep "test_prefer_config_shell=" $tst >/dev/null || echo $tst
       done
 }
-defines_for_shtst='--define test_prefer_config_shell "yes"'
-add_wrapper_type "shtst"
+defines_for_cs='--define test_prefer_config_shell "yes"'
+add_wrapper_type "cs"
 
 # Tests on tap support should be run with both the perl and awk
 # implementations of the TAP driver.
@@ -112,6 +115,7 @@ add_wrapper_type "pltap"
 echo '## Generated by gen-wrapped-tests.  DO NOT EDIT.'
 echo 'wrap_TESTS ='
 echo 'wrap_LOGS ='
+echo
 
 # NOTE: the following is not really right, since cannot compose wrapping
 # of tests matching more than one condition.  Still, there should be no
@@ -120,22 +124,62 @@ echo 'wrap_LOGS ='
 # in Makefile.am will start failing.
 
 for wtype in $wrapper_type_list; do
-  WTYPE=`echo $wtype | LC_ALL=C tr '[a-z]' '[A-Z]'`
   eval defines=\${defines_for_$wtype}
-  echo "TEST_EXTENSIONS += .$wtype"
-  echo "${WTYPE}_LOG_COMPILER = \\"
-  echo "  \$(LOG_COMPILER) \$(srcdir)/wrap-tests.sh \\"
-  echo "  --type $wtype $defines"
   get_list_for_$wtype $tests \
-    | sed -e '
-        h
-        s/\(.*\)\.\([^.]\)*$/wrap_TESTS += \1-w.'$wtype'/
-        p
-        x
-        h
-        s/\(.*\)\.\([^.]*\)$/\1-w.log: \1.\2/
-        p
-        x
-        s/\(.*\)\.[^.]*$/wrap_LOGS += \1-w.log/
+    | wtype="$wtype" defines="$defines" $PERL -w -e '
+        use strict;
+        use warnings FATAL => "all";
+
+        my $wtype = $ENV{"wtype"};
+
+        # Suffix for a generated wrapped test, from the suffix of a
+        # hand-written test.
+        sub gen_suffix ($) { return $_[0] . "_" . $wtype; }
+
+        HANDLE_SUFFIX :
+        {
+          my %have_suffix;
+          sub handle_if_new_suffix ($)
+          {
+            my $suf = shift;
+            return
+              if $have_suffix{$suf};
+            $have_suffix{$suf} = 1;
+            print "\n";
+            print "TEST_EXTENSIONS += ." . gen_suffix ($suf) . "\n";
+            my $uc_orig_suf = uc ($suf);
+            my $uc_wrap_suf = uc ($suf) . "_" . uc ($wtype);
+            print <<EOF;
+
+${uc_wrap_suf}_LOG_DRIVER = \\
+  \$(${uc_orig_suf}_LOG_DRIVER)
+
+AM_${uc_wrap_suf}_LOG_DRIVER_FLAGS = \\
+  \$(AM_${uc_orig_suf}_LOG_DRIVER_FLAGS) \\
+  \$(${uc_orig_suf}_LOG_DRIVER_FLAGS)
+
+${uc_wrap_suf}_LOG_COMPILER = \\
+  \$(LOG_COMPILER) \$(srcdir)/wrap-tests.sh \\
+  --type $wtype $ENV{"defines"}
+
+EOF
+         }
+       }
+    while (<>)
+      {
+        chomp;
+        if (/^(.*)\.(test|tap)$/)
+          {
+            my ($bas, $suf) = ($1, $2);
+            handle_if_new_suffix ($suf);
+            print "wrap_TESTS += $bas-w." . gen_suffix ($suf) . "\n";
+            print "wrap_LOGS += $bas-w.log\n";
+            print "$bas-w.log: $bas.$suf\n";
+          }
+        else
+          {
+            die "invalid test name `$_`";
+          }
+      }
     '
 done
diff --git a/tests/wrap-tests.sh b/tests/wrap-tests.sh
index 1a17db3..2eb65a5 100755
--- a/tests/wrap-tests.sh
+++ b/tests/wrap-tests.sh
@@ -49,44 +49,41 @@ while test $# -gt 0; do
   esac
   shift
 done
-test -n "$typ" || fatal_ "suffix not specified"
 
-case $#,$1 in
-  0,) fatal_ "missing argument";;
-  1,*-w.$typ) test_name=`expr x/"$1" : ".*/\\\\(.*\\\\)-w\\\\.$typ$"`;;
-  1,*) fatal_ "invalid argument \`$1'";;
+case $typ in
+  "") fatal_ "suffix not specified";;
+  *.*) fatal_ "invalid suffix \`$typ' (contains dot)";;
+esac
+
+case $# in
+  0) fatal_ "missing argument";;
+  1) ;;
   *) fatal_ "too many arguments";;
 esac
 
-set -x
+# We must let the code in ./defs which kind of test script it is
+# dealing with -- TAP or "plain".  It won't be able to guess
+# automatically, since it uses `$0' for such a guess, and with
+# the present usage `$0' is always `wrap-tests.sh'.
+case $1 in
+  *-w.test_$typ) using_tap=no suf=test;;
+  *-w.tap_$typ) using_tap=yes suf=tap;;
+  *) fatal_ "invalid argument \`$1'";;
+esac
+
+test_name=`expr x/"$1" : ".*/\\\\(.*\\\\)-w\\\\.[^.][^.]*$"` \
+  && test -n "$test_name" \
+  || fatal_ "couldn't extract test name"
+shift
+
 # This is required to have the wrapped test use a proper temporary
 # directory to run into.
 me=${test_name}-w
 # In the spirit of VPATH, we prefer a test in the build tree
 # over one in the source tree.
 for dir in . "$testsrcdir"; do
-  # The testsuite shouldn't have a TAP and plain test with the same
-  # basename (they would end up sharing the same basename and thus the
-  # same `.log' and `.trs' files, wreaking havoc).  So just test for
-  # the two flavors in random order.
-  for suf in tap test; do
-    if test -f "$dir/$test_name.$suf"; then
-      # We must let the code in ./defs which kind of test script it is
-      # dealing with -- TAP or "plain".  It won't be able to guess
-      # automatically, since it uses `$0' for such a guess, and with
-      # the present usage `$0' is always `wrap-tests.sh'.
-      if test $suf = tap; then
-        using_tap=yes
-      else
-        using_tap=no
-      fi
-      # Shell traces will be properly re-enabled later by the sourced
-      # test script.
-      set +x
-      . "$dir/$test_name.$suf"
-      exit $?
-    fi
-  done
+  . "$dir/$test_name.$suf"
+  exit $?
 done
 
 fatal_ "cannot find wrapped test \`$test_name'"
-- 
1.7.2.3




reply via email to

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