automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-395-


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-395-ge118126
Date: Thu, 04 Nov 2010 21:43:41 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=e1181261dfd80b3046f1219e8fcfbb99707288f5

The branch, master has been updated
       via  e1181261dfd80b3046f1219e8fcfbb99707288f5 (commit)
      from  d3134dcba601c678a932066a99d1c91a56fc190d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e1181261dfd80b3046f1219e8fcfbb99707288f5
Author: Stefano Lattarini <address@hidden>
Date:   Sun Jun 6 18:38:27 2010 +0200

    Overhauled and modularized tests in `instspc.test'.
    
    The test `instspc.test' was way too big and fragile.  Its running
    time was very long.  It also produced a log that was nearly
    unreadable due to its length, making it very difficult to find
    out the reason for failures.
    Also, it was too much monolithic, with a single (maybe spurious)
    failure in a corner case causing the whole test to fail (even if
    everything worked as expected in the other 99% of cases).
    The present change should solve these problems, by separating
    `instspc.test' into many smaller, self-contained, auto-generated
    tests.
    
    * tests/instspc.test: Removed.
    * tests/instspc-tests.sh: New script, fullfilling a double role:
    1. it generates a Makefile.am snippet `tests/instspc-tests.am',
    containing the definition of a list of new tests which will take
    over the older `instspc.test', and
    2. it is sourced by said generated tests with proper parameters
    pre-set, to run the "meat" of the checks.
    This apparent abuse is indeed required because the test generation
    code and test execution code are inevitably interwined.
    * tests/Makefile.am ($(srcdir)/instspc-tests.am): Include this
    snippet, which (among the other things) defines ...
    (instspc_tests): ... this new macro, containing the list of the
    newly generated `instspc*.test' tests, and ...
    (instspc_xfail_tests): ... this new macro, containing the list
    of the `instspc*.test' tests expected to fail.
    ($(instspc_tests)): New rule, generates the `instspc*.test' tests.
    ($(instspc_tests:.test=.log)): New rule, registers the dependency
    of all `instspc*.test' tests on the `instspc-tests.sh' script.
    (TESTS): Add `$(instspc_tests)', remove `instspc.test'.
    (XFAIL_TESTS): Add `$(xfail_instspc_tests)'.
    (EXTRA_DIST): Distribute instspc-tests.sh.
    (MAINTAINERCLEANFILES): Added $(instspc_tests).
    Other minor cosmetic changes.
    * bootstrap: Generate instspc-tests.am.
    * tests/.gitignore: Updated.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog              |   39 ++++++
 bootstrap              |    3 +-
 tests/.gitignore       |    5 +-
 tests/Makefile.am      |   48 +++++++-
 tests/Makefile.in      |  110 ++++++++++++++++--
 tests/instspc-tests.sh |  301 ++++++++++++++++++++++++++++++++++++++++++++++++
 tests/instspc.test     |  187 ------------------------------
 7 files changed, 489 insertions(+), 204 deletions(-)
 create mode 100755 tests/instspc-tests.sh
 delete mode 100755 tests/instspc.test

diff --git a/ChangeLog b/ChangeLog
index 5fff04a..2d0a145 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,42 @@
+2010-11-03  Stefano Lattarini  <address@hidden>
+
+       Overhauled and modularized tests in `instspc.test'.
+       The test `instspc.test' was way too big and fragile.  Its running
+       time was very long.  It also produced a log that was nearly
+       unreadable due to its length, making it very difficult to find
+       out the reason for failures.
+       Also, it was too much monolithic, with a single (maybe spurious)
+       failure in a corner case causing the whole test to fail (even if
+       everything worked as expected in the other 99% of cases).
+       The present change should solve these problems, by separating
+       `instspc.test' into many smaller, self-contained, auto-generated
+       tests.
+       * tests/instspc.test: Removed.
+       * tests/instspc-tests.sh: New script, fulfilling a double role:
+       1. it generates a Makefile.am snippet `tests/instspc-tests.am',
+       containing the definition of a list of new tests which will take
+       over the older `instspc.test', and
+       2. it is sourced by said generated tests with proper parameters
+       pre-set, to run the "meat" of the checks.
+       This apparent abuse is indeed required because the test generation
+       code and test execution code are inevitably intertwined.
+       * tests/Makefile.am ($(srcdir)/instspc-tests.am): Include this
+       snippet, which (among the other things) defines ...
+       (instspc_tests): ... this new macro, containing the list of the
+       newly generated `instspc*.test' tests, and ...
+       (instspc_xfail_tests): ... this new macro, containing the list
+       of the `instspc*.test' tests expected to fail.
+       ($(instspc_tests)): New rule, generates the `instspc*.test' tests.
+       ($(instspc_tests:.test=.log)): New rule, registers the dependency
+       of all `instspc*.test' tests on the `instspc-tests.sh' script.
+       (TESTS): Add `$(instspc_tests)', remove `instspc.test'.
+       (XFAIL_TESTS): Add `$(xfail_instspc_tests)'.
+       (EXTRA_DIST): Distribute instspc-tests.sh.
+       (MAINTAINERCLEANFILES): Added $(instspc_tests).
+       Other minor cosmetic changes.
+       * bootstrap: Generate instspc-tests.am.
+       * tests/.gitignore: Updated.
+
 2010-11-01  Ralf Wildenhues  <address@hidden>
 
        Add FAQ entry for bug reporting instructions.
diff --git a/bootstrap b/bootstrap
index 9f1a8d8..41f1f4e 100755
--- a/bootstrap
+++ b/bootstrap
@@ -103,9 +103,10 @@ dosubst m4/amversion.in m4/amversion.m4
 # Create temporary replacement for automake.
 dosubst automake.in automake.tmp
 
-# Create tests/parallel-tests.am.
+# Create required makefile snippets.
 cd tests
 $BOOTSTRAP_SHELL ./gen-parallel-tests > parallel-tests.am
+$BOOTSTRAP_SHELL ./instspc-tests.sh --generate-makefile > instspc-tests.am
 cd ..
 
 # Run the autotools.
diff --git a/tests/.gitignore b/tests/.gitignore
index 61b0783..ff89b40 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,9 +1,12 @@
 aclocal-*
 automake-*
 defs
+instspc-tests.am
 parallel-tests.am
 *.dir
 *.log
 *.log-t
 *-p.test
-*-p.test-t
+instspc-*-build.test
+instspc-*-install.test
+*.test-t
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 6673293..b25865b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -16,6 +16,9 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+MAINTAINERCLEANFILES =
+EXTRA_DIST = ChangeLog-old
+
 XFAIL_TESTS = \
 all.test \
 auxdir2.test \
@@ -23,6 +26,7 @@ cond17.test \
 gcj6.test \
 txinfo5.test
 
+
 include $(srcdir)/parallel-tests.am
 
 $(srcdir)/parallel-tests.am: gen-parallel-tests Makefile.am
@@ -51,7 +55,44 @@ $(parallel_tests): Makefile.am
        } > address@hidden
        $(AM_V_at)chmod a+rx address@hidden && mv -f address@hidden $@
 
-MAINTAINERCLEANFILES = $(parallel_tests)
+MAINTAINERCLEANFILES += $(parallel_tests)
+EXTRA_DIST += gen-parallel-tests
+
+
+include $(srcdir)/instspc-tests.am
+
+$(srcdir)/instspc-tests.am: instspc-tests.sh Makefile.am
+       $(AM_V_GEN)($(am__cd) $(srcdir) \
+         && $(SHELL) ./instspc-tests.sh --generate-makefile) >$@
+
+$(instspc_tests): Makefile.am
+       $(AM_V_at)rm -f $@ address@hidden
+       $(AM_V_GEN) :; \
+         base=`expr 'x/$@' : 'x.*/instspc-\(.*\)\.test$$'`; \
+         name=`expr x"$$base" : x'\(.*\)-'`; \
+         action=`expr x"$$base" : x'.*-\(.*\)'`; \
+         { \
+           echo '#!/bin/sh'; \
+           echo '# DO NOT EDIT!  GENERATED AUTOMATICALLY!'; \
+           echo; \
+           echo '# Ensure proper definition of $$srcdir.'; \
+           echo 'am_skip_defs=yes'; \
+           echo '. ./defs || exit 99'; \
+           echo 'test -n "$$srcdir" || exit 99 # sanity check'; \
+           echo; \
+           echo "instspc_test_name='$$name'"; \
+           echo "instspc_action='test-$$action'"; \
+           echo ". \$$srcdir/instspc-tests.sh"; \
+         } > address@hidden
+       $(AM_V_at)chmod a+rx address@hidden && mv -f address@hidden $@
+
+# All instspc*.test tests work by sourcing the instspc-tests.sh script.
+$(instspc_tests:.test=.log): instspc-tests.sh
+
+MAINTAINERCLEANFILES += $(instspc_tests)
+EXTRA_DIST += instspc-tests.sh
+XFAIL_TESTS += $(instspc_xfail_tests)
+
 
 TESTS = \
 aclibobj.test \
@@ -429,7 +470,7 @@ instman2.test \
 instmany.test \
 instmany-mans.test \
 instmany-python.test \
-instspc.test \
+$(instspc_tests) \
 interp.test \
 interp2.test \
 java.test \
@@ -835,7 +876,8 @@ yflags.test \
 yflags2.test \
 $(parallel_tests)
 
-EXTRA_DIST = ChangeLog-old gen-parallel-tests $(TESTS)
+EXTRA_DIST += $(TESTS)
+
 
 # Each test case depends on defs, aclocal, and automake.
 $(TEST_LOGS): defs aclocal-$(APIVERSION) automake-$(APIVERSION)
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 3bc699f..18f825b 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -50,7 +50,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
        $(srcdir)/aclocal.in $(srcdir)/automake.in $(srcdir)/defs.in \
-       $(srcdir)/parallel-tests.am
+       $(srcdir)/instspc-tests.am $(srcdir)/parallel-tests.am
 subdir = tests
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
@@ -279,20 +279,79 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-XFAIL_TESTS = \
-all.test \
-auxdir2.test \
-cond17.test \
-gcj6.test \
-txinfo5.test
-
+MAINTAINERCLEANFILES = $(parallel_tests) $(instspc_tests)
+EXTRA_DIST = ChangeLog-old gen-parallel-tests instspc-tests.sh \
+       $(TESTS)
+XFAIL_TESTS = all.test auxdir2.test cond17.test gcj6.test txinfo5.test \
+       $(instspc_xfail_tests)
 parallel_tests = check-p.test check10-p.test check11-p.test \
        check2-p.test check3-p.test check4-p.test check5-p.test \
        check6-p.test check7-p.test check8-p.test check9-p.test \
        color-p.test color2-p.test comment9-p.test dejagnu-p.test \
        exeext4-p.test maken3-p.test maken4-p.test pr401-p.test \
        pr401b-p.test pr401c-p.test
-MAINTAINERCLEANFILES = $(parallel_tests)
+instspc_tests = instspc-squote-build.test instspc-squote-install.test \
+       instspc-dquote-build.test instspc-dquote-install.test \
+       instspc-bquote-build.test instspc-bquote-install.test \
+       instspc-sharp-build.test instspc-sharp-install.test \
+       instspc-dollar-build.test instspc-dollar-install.test \
+       instspc-bang-build.test instspc-bang-install.test \
+       instspc-bslash-build.test instspc-bslash-install.test \
+       instspc-ampersand-build.test instspc-ampersand-install.test \
+       instspc-percent-build.test instspc-percent-install.test \
+       instspc-leftpar-build.test instspc-leftpar-install.test \
+       instspc-rightpar-build.test instspc-rightpar-install.test \
+       instspc-pipe-build.test instspc-pipe-install.test \
+       instspc-caret-build.test instspc-caret-install.test \
+       instspc-tilde-build.test instspc-tilde-install.test \
+       instspc-qmark-build.test instspc-qmark-install.test \
+       instspc-star-build.test instspc-star-install.test \
+       instspc-plus-build.test instspc-plus-install.test \
+       instspc-minus-build.test instspc-minus-install.test \
+       instspc-comma-build.test instspc-comma-install.test \
+       instspc-colon-build.test instspc-colon-install.test \
+       instspc-semicol-build.test instspc-semicol-install.test \
+       instspc-equal-build.test instspc-equal-install.test \
+       instspc-less-build.test instspc-less-install.test \
+       instspc-more-build.test instspc-more-install.test \
+       instspc-at-build.test instspc-at-install.test \
+       instspc-lqbrack-build.test instspc-lqbrack-install.test \
+       instspc-rqbrack-build.test instspc-rqbrack-install.test \
+       instspc-lcbrack-build.test instspc-lcbrack-install.test \
+       instspc-rcbrack-build.test instspc-rcbrack-install.test \
+       instspc-space-build.test instspc-space-install.test \
+       instspc-tab-build.test instspc-tab-install.test \
+       instspc-linefeed-build.test instspc-linefeed-install.test \
+       instspc-backspace-build.test instspc-backspace-install.test \
+       instspc-formfeed-build.test instspc-formfeed-install.test \
+       instspc-carriageret-build.test \
+       instspc-carriageret-install.test \
+       instspc-quadrigraph0-build.test \
+       instspc-quadrigraph0-install.test \
+       instspc-quadrigraph1-build.test \
+       instspc-quadrigraph1-install.test \
+       instspc-quadrigraph2-build.test \
+       instspc-quadrigraph2-install.test \
+       instspc-quadrigraph3-build.test \
+       instspc-quadrigraph3-install.test \
+       instspc-quadrigraph4-build.test \
+       instspc-quadrigraph4-install.test instspc-a_b-build.test \
+       instspc-a_b-install.test instspc-a__b-build.test \
+       instspc-a__b-install.test instspc-a_lf_b-build.test \
+       instspc-a_lf_b-install.test instspc-dotdotdot-build.test \
+       instspc-dotdotdot-install.test instspc-dosdrive-build.test \
+       instspc-dosdrive-install.test instspc-miscglob1-build.test \
+       instspc-miscglob1-install.test instspc-miscglob2-build.test \
+       instspc-miscglob2-install.test
+instspc_xfail_tests = instspc-squote-build.test \
+       instspc-dquote-build.test instspc-bquote-build.test \
+       instspc-sharp-build.test instspc-dollar-build.test \
+       instspc-bslash-build.test instspc-ampersand-build.test \
+       instspc-linefeed-build.test instspc-quadrigraph0-build.test \
+       instspc-a_lf_b-build.test instspc-squote-install.test \
+       instspc-dquote-install.test instspc-bquote-install.test \
+       instspc-sharp-install.test instspc-dollar-install.test \
+       instspc-linefeed-install.test instspc-a_lf_b-install.test
 TESTS = \
 aclibobj.test \
 aclocal.test \
@@ -669,7 +728,7 @@ instman2.test \
 instmany.test \
 instmany-mans.test \
 instmany-python.test \
-instspc.test \
+$(instspc_tests) \
 interp.test \
 interp2.test \
 java.test \
@@ -1075,12 +1134,11 @@ yflags.test \
 yflags2.test \
 $(parallel_tests)
 
-EXTRA_DIST = ChangeLog-old gen-parallel-tests $(TESTS)
 all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .html .log .test
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/parallel-tests.am 
$(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/parallel-tests.am 
$(srcdir)/instspc-tests.am $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -1444,6 +1502,34 @@ $(parallel_tests): Makefile.am
        } > address@hidden
        $(AM_V_at)chmod a+rx address@hidden && mv -f address@hidden $@
 
+$(srcdir)/instspc-tests.am: instspc-tests.sh Makefile.am
+       $(AM_V_GEN)($(am__cd) $(srcdir) \
+         && $(SHELL) ./instspc-tests.sh --generate-makefile) >$@
+
+$(instspc_tests): Makefile.am
+       $(AM_V_at)rm -f $@ address@hidden
+       $(AM_V_GEN) :; \
+         base=`expr 'x/$@' : 'x.*/instspc-\(.*\)\.test$$'`; \
+         name=`expr x"$$base" : x'\(.*\)-'`; \
+         action=`expr x"$$base" : x'.*-\(.*\)'`; \
+         { \
+           echo '#!/bin/sh'; \
+           echo '# DO NOT EDIT!  GENERATED AUTOMATICALLY!'; \
+           echo; \
+           echo '# Ensure proper definition of $$srcdir.'; \
+           echo 'am_skip_defs=yes'; \
+           echo '. ./defs || exit 99'; \
+           echo 'test -n "$$srcdir" || exit 99 # sanity check'; \
+           echo; \
+           echo "instspc_test_name='$$name'"; \
+           echo "instspc_action='test-$$action'"; \
+           echo ". \$$srcdir/instspc-tests.sh"; \
+         } > address@hidden
+       $(AM_V_at)chmod a+rx address@hidden && mv -f address@hidden $@
+
+# All instspc*.test tests work by sourcing the instspc-tests.sh script.
+$(instspc_tests:.test=.log): instspc-tests.sh
+
 # Each test case depends on defs, aclocal, and automake.
 $(TEST_LOGS): defs aclocal-$(APIVERSION) automake-$(APIVERSION)
 
diff --git a/tests/instspc-tests.sh b/tests/instspc-tests.sh
new file mode 100755
index 0000000..90087eb
--- /dev/null
+++ b/tests/instspc-tests.sh
@@ -0,0 +1,301 @@
+#! /bin/sh
+# Copyright (C) 2010 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Driver script to generate and run tests checking that building from,
+# or installing to, directories with shell metacharacters succeed.
+#
+# Original report from James Amundson about file names with spaces.
+# Other characters added by Paul Eggert.
+#
+# This script fulfills a double role:
+#   1. It generates a Makefile.am snippet, containing the definition
+#      of proper lists of tests.
+#   2. It is sourced by said generated tests with proper parameters
+#      pre-set, to run the "meat" of the checks.
+# This setup might seem tricky and over-engineered abuse, but past
+# (painful) experiences showed that it is indeed required, because
+# the test generation code and test execution code tend to be
+# inextricably coupled and intertwined.
+#
+
+# Be more Bourne compatible (snippet copied from `tests/defs.in').
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+
+set -e
+
+# Sanity and usage checks.
+if test x"$instspc_action" = x; then
+  if test "$#,$1" = "1,--generate-makefile"; then
+    instspc_action=generate-makefile
+  else
+    echo "$0: empty action and no proper command line" >&2
+    exit 99
+  fi
+elif test $# -gt 0; then
+  echo "$0: action specified and command line arguments used" >&2
+  exit 99
+elif test x"$instspc_action" = x"generate-makefile"; then
+  :
+else
+  case $instspc_action in
+    test-build|test-install)
+      if test x"$instspc_test_name" = x; then
+        echo "$0: test name undefined for action '$instspc_action'" >&2
+        exit 99
+      fi;;
+    *)
+      echo "$0: invalid action: '$instspc_action'"
+      exit 99;;
+  esac
+fi
+
+# Helper subroutine for test data definition.
+# Usage: define_problematic_string NAME STRING
+define_problematic_string ()
+{
+  tst=$1
+  shift
+  eval "instspc__$tst=\$1" || exit 99
+  shift
+  instspc_names_list="$instspc_names_list $tst"
+  # Some of the "problematic" characters cannot be used in the name of
+  # a build or install directory on a POSIX host.  These lists should
+  # be empty, but are not due to limitations in Autoconf, Automake, Make,
+  # M4, or the shell.
+  case " $* " in *' fail-build '*|*' build-fail '*)
+    instspc_xfail_builds_list="$instspc_xfail_builds_list $tst";;
+  esac
+  case " $* " in *' fail-install '*|*' install-fail '*)
+    instspc_xfail_installs_list="$instspc_xfail_installs_list $tst";;
+  esac
+}
+
+# Be sure to avoid interferences from the environment.
+instspc_names_list=''
+instspc_xfail_builds_list=''
+instspc_xfail_installs_list=''
+
+
+# ================= #
+#  Test data begin  #
+# ----------------- #
+
+# Some control characters that are white space.
+bs=''   # back space
+cr='
'   # carriage return
+ff=''   # form feed
+ht='   ' # horizontal tab
+lf='
+'         # line feed (aka newline)
+
+# Hack to save typing and make code visually clearer.
+def=define_problematic_string
+
+$def    squote          \'          fail-build  fail-install
+$def    dquote          '"'         fail-build  fail-install
+$def    bquote          '`'         fail-build  fail-install
+$def    sharp           '#'         fail-build  fail-install
+$def    dollar          '$'         fail-build  fail-install
+$def    bang            '!'
+$def    bslash          '\'         fail-build
+$def    ampersand       '&'         fail-build
+$def    percent         '%'
+$def    leftpar         '('
+$def    rightpar        ')'
+$def    pipe            '|'
+$def    caret           '^'
+$def    tilde           '~'
+$def    qmark           '?'
+$def    star            '*'
+$def    plus            '+'
+$def    minus           '-'
+$def    comma           ','
+$def    colon           ':'
+$def    semicol         ';'
+$def    equal           '='
+$def    less            '<'
+$def    more            '>'
+$def    at              '@'
+$def    lqbrack         '['
+$def    rqbrack         ']'
+$def    lcbrack         '{'
+$def    rcbrack         '}'
+$def    space           ' '
+$def    tab             "$ht"
+$def    linefeed        "$lf"       fail-build  fail-install
+$def    backspace       "$bs"
+$def    formfeed        "$ff"
+$def    carriageret     "$cr"
+$def    quadrigraph0    '@&t@'      fail-build
+$def    quadrigraph1    '@<:@'
+$def    quadrigraph2    '@:>@'
+$def    quadrigraph3    '@S|@'
+$def    quadrigraph4    '@%:@'
+$def    a_b             'a b'
+$def    a__b            'a  b'
+$def    a_lf_b          "a${lf}b"   fail-build  fail-install
+$def    dotdotdot       '...'
+$def    dosdrive        'a:'
+$def    miscglob1       '?[a-z]*'
+$def    miscglob2       '.*?[0-9]'
+
+unset def
+
+# --------------- #
+#  Test data end  #
+# =============== #
+
+
+if test x"$instspc_action" = x"generate-makefile"; then
+  # We must generate a makefile fragment on stdout.  It must refer
+  # to all tests at once, hence the loop below.
+  echo '## Generated by instspc-tests.sh.  DO NOT EDIT!'
+  echo 'instspc_tests ='
+  echo 'instspc_xfail_tests ='
+  for test_name in $instspc_names_list; do
+    echo "instspc_tests += instspc-$test_name-build.test"
+    echo "instspc_tests += instspc-$test_name-install.test"
+  done
+  for test_name in $instspc_xfail_builds_list; do
+    echo "instspc_xfail_tests += instspc-$test_name-build.test"
+  done
+  for test_name in $instspc_xfail_installs_list; do
+    echo "instspc_xfail_tests += instspc-$test_name-install.test"
+  done
+  exit 0
+fi
+
+###  If we are still here, we have to run a test ...
+
+# We'll need the full setup provided by `tests/defs'.  Temporarly disable
+# the errexit flag, since the setup code might not be prepared to deal
+# with it.
+set +e
+. ./defs || Exit 99
+set -e
+
+eval "instspc_test_string=\${instspc__$instspc_test_name}" || Exit 99
+if test x"$instspc_test_string" = x; then
+  echo "$me: invalid test name: '$instspc_test_name'" >&2
+  Exit 99
+fi
+
+# Skip if this system doesn't support these characters in file names.
+mkdir "./$instspc_test_string" || Exit 77
+
+mkdir sub sub1
+
+cat >> configure.in << 'EOF'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_OUTPUT
+EOF
+
+: > sub/base.h
+: > sub/nobase.h
+: > sub/base.dat
+: > sub/nobase.dat
+: > sub/base.sh
+: > sub/nobase.sh
+
+cat > source.c << 'EOF'
+int
+main (int argc, char **argv)
+{
+  return 0;
+}
+EOF
+cp source.c source2.c
+
+cat > Makefile.am << 'EOF'
+foodir = $(prefix)/foo
+fooexecdir = $(prefix)/foo
+
+foo_HEADERS = sub/base.h
+nobase_foo_HEADERS = sub/nobase.h
+
+dist_foo_DATA = sub/base.dat
+nobase_dist_foo_DATA = sub/nobase.dat
+
+dist_fooexec_SCRIPTS = sub/base.sh
+nobase_dist_fooexec_SCRIPTS = sub/nobase.sh
+
+fooexec_PROGRAMS = sub/base
+nobase_fooexec_PROGRAMS = sub/nobase
+sub_base_SOURCES = source.c
+sub_nobase_SOURCES = source.c
+
+fooexec_LIBRARIES = sub/libbase.a
+nobase_fooexec_LIBRARIES = sub/libnobase.a
+sub_libbase_a_SOURCES = source.c
+sub_libnobase_a_SOURCES = source.c
+
+.PHONY: test-install-sep
+test-install-sep: install
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.h'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.h'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.h'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.dat'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.dat'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.dat'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.sh'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.sh'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.sh'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase$(EXEEXT)'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase$(EXEEXT)'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base$(EXEEXT)'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/libnobase.a'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/libnobase.a'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/libbase.a'
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+case $instspc_action in
+  test-build)
+    build=$instspc_test_string
+    dest=`pwd`/sub1
+    ;;
+  test-install)
+    build=sub1
+    dest=`pwd`/$instspc_test_string
+    ;;
+  *)
+    echo "$me: internal error: invalid action '$instspc_action'"
+    Exit 99
+    ;;
+esac
+
+cd "./$build"
+
+../configure --prefix "/$instspc_test_string-prefix"
+$MAKE
+DESTDIR="$dest" file="$instspc_test_string" $MAKE -e test-install-sep
+
+:
diff --git a/tests/instspc.test b/tests/instspc.test
deleted file mode 100755
index 414b3e5..0000000
--- a/tests/instspc.test
+++ /dev/null
@@ -1,187 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Check that installation to directory with shell metacharacters succeed.
-# Original report from James Amundson about file names with spaces.
-# Other characters added by Paul Eggert.
-
-# This is mostly the same input as nobase.test, but we do not use
-# libtool libraries, because Libtool does not preserve space in
-# file names (Issue observed with ltmain.sh (GNU libtool) 1.5a (1.1323
-# 2003/11/10 21:06:47))
-
-
-required='gcc'
-. ./defs || Exit 1
-
-set -e
-
-# Set up files that won't change each time through the loop.
-
-cat >> configure.in <<'EOF'
-AC_PROG_CC
-AC_PROG_RANLIB
-AC_OUTPUT
-EOF
-
-mkdir sub
-
-: > sub/base.h
-: > sub/nobase.h
-: > sub/base.dat
-: > sub/nobase.dat
-: > sub/base.sh
-: > sub/nobase.sh
-
-cat >source.c <<'EOF'
-int
-main (int argc, char **argv)
-{
-  return 0;
-}
-EOF
-cp source.c source2.c
-
-cat > Makefile.am << 'EOF'
-foodir = $(prefix)/foo
-fooexecdir = $(prefix)/foo
-
-foo_HEADERS = sub/base.h
-nobase_foo_HEADERS = sub/nobase.h
-
-dist_foo_DATA = sub/base.dat
-nobase_dist_foo_DATA = sub/nobase.dat
-
-dist_fooexec_SCRIPTS = sub/base.sh
-nobase_dist_fooexec_SCRIPTS = sub/nobase.sh
-
-fooexec_PROGRAMS = sub/base
-nobase_fooexec_PROGRAMS = sub/nobase
-sub_base_SOURCES = source.c
-sub_nobase_SOURCES = source.c
-
-fooexec_LIBRARIES = sub/libbase.a
-nobase_fooexec_LIBRARIES = sub/libnobase.a
-sub_libbase_a_SOURCES = source.c
-sub_libnobase_a_SOURCES = source.c
-
-test-install-sep: install
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.h'
-       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.h'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.h'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.dat'
-       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.dat'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.dat'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.sh'
-       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.sh'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.sh'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase$(EXEEXT)'
-       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase$(EXEEXT)'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/base$(EXEEXT)'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/libnobase.a'
-       test ! -f '$(DESTDIR)/$(file)-prefix/foo/libnobase.a'
-       test   -f '$(DESTDIR)/$(file)-prefix/foo/libbase.a'
-EOF
-
-$ACLOCAL
-$AUTOCONF
-$AUTOMAKE -a
-
-# Some control characters that are white space:
-# back space, carriage return, form feed, horizontal tab, line feed, space
-bs=''
-cr='
'
-ff=''
-ht='   '
-lf='
-'
-sp=' '
-
-build_failures=
-install_failures=
-
-for file in \
-  '!' '"' '#' '$' '%' '&' \' '(' ')' '*' '+' ',' '-' ':' ';' \
-  '<' '=' '>' '?' '@' '[' '\' ']' '^' '`' '{' '|' '}' '~' \
-  "$bs" "$cr" "$ff" "$ht" "$lf" "$sp" \
-  '@<:@' '@:>@' '@S|@' '@%:@' '@&t@' \
-  "a${sp}b" "a${sp}${sp}b" "a${lf}b" ... a:
-do
-  for test in build install; do
-    case $test in
-    build)
-      build=$file
-      dest=`pwd`/sub1;;
-    install)
-      build=sub1
-      dest=`pwd`/$file;;
-    esac
-
-    # Make sure this system supports this character in file names.
-    mkdir sub1 "./$file" || Exit 77
-
-    cd "$build"
-
-    ../configure --prefix "/$file-prefix" &&
-    $MAKE &&
-    DESTDIR=$dest file=$file $MAKE -e test-install-sep ||
-      eval "${test}_failures=\"\$${test}_failures$lf\$file\""
-
-    cd ..
-
-    rm -fr sub1 "./$file"
-  done
-done
-
-# The list of the above file names that cannot be used as a build directory
-# on a POSIX host.  This list should be empty, but is not due to limitations
-# in Autoconf, Automake, Make, M4, or the shell.
-expected_build_failures='
-"
-#
-$
-&
-'\''
-\
-`
-'"$lf"'
-@&t@
-a'"${lf}"'b'
-
-# Similarly, the list of file names that cannot be used as an install directory
-# on a POSIX host.  This list should also be empty.
-expected_install_failures='
-"
-#
-$
-'\''
-`
-'"$lf"'
-a'"${lf}"'b'
-
-fail=0
-for test in build install; do
-  eval failures=\$${test}_failures
-  case $failures in
-  ?*)
-    cat >&2 <<EOF
-$0: $test test failed for the following file names:$failures
-EOF
-    eval test \"\$failures\" = \"\$expected_${test}_failures\" || fail=1
-  esac
-done
-
-Exit $fail


hooks/post-receive
-- 
GNU Automake



reply via email to

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