• Show log

    Commit

  • Hash : c2a52bf0
    Author : Stefano Lattarini
    Date : 2012-06-24T10:36:15

    tests: simpler workaround for shells losing the exit status in exit trap
    
    Now that we can assume our tests are run by a decent POSIX shell, we
    can simplify our workaround aimed at having the exit status propagated
    correctly to the code in the exit trap.  Unfortunately, we cannot
    dispense with such a workaround altogether, because it's still required
    by some shells we need to support (at least Solaris 10 /bin/ksh and
    /usr/xpg4/bin/sh).
    
    For more information about the need of that workaround, see the entry
    about 'trap' in the section "Limitations of Shell Builtins" in the
    Autoconf manual:
    <http://www.gnu.org/software/autoconf/manual/autoconf.html#trap>
    
    The new workaround has been tested successfully with the following
    shells:
    
      - Bash 4.1
      - Bash 3.2
      - Bash 3.0
      - Bash 2.05b
      - dash 0.5.5.1
      - dash 0.5.2
      - AT&T Ksh 93u (from official Debian package)
      - MirBSD Korn Shell 40.2 (from official Debian package)
      - Solaris 9, 10 and 11 /bin/ksh
      - Solaris 9, 10 and 11 /usr/xpg4/bin/sh
      - NetBSD 5.1 /bin/sh
      - NetBSD 5.1 /bin/ksh
    
    * t/ax/test-init.sh (Exit): Rename ...
    (_am_exit): ... like this.
    (exit): New alias for '_am_exit'.  We cannot simply redefine 'exit'
    as a shell function, because some shells (dash 0.5.5.1, Solaris 10
    /bin/ksh and /usr/xpg4/bin/sh) do not allow it.
    (_am_exit, trap): Add extra escaping for 'exit' calls, to ensure we
    really invoke the 'exit' builtin and not our alias with the same
    name.
    * configure.ac: Check that the shell selected to run our testsuite
    supports aliases named like shell builtins.
    * t/REAMDE: Adjust.
    * All tests: Adjust, by simply using 'exit' instead of 'Exit'.
    * t/self-check-explicit-skips.sh: Adjust: the first usage of 'exit'
    after it has been redefined as an alias must be on a new line w.r.t.
    that where the alias is defined, in order for the redefinition to be
    honored.
    * syntax-checks.mk (sc_tests_Exit_not_exit): Delete.
    (sc_tests_exit_not_Exit): New.
    (syntax_check_rules): Adjust.
    (sc_tests_automake_fails): Simplify the recipe a little.
    * Several tests: Remove now useless spurious quoting once required
    to placate the 'sc_tests_Exit_not_exit' maintainer check.
    * gen-testsuite-part: Likewise.  Also, avoid uses of 'Exit' in the
    generated scripts.
    
    Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>