[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Testsuite: defs.in: work around zsh incompatibility w.r.t ha
From: |
Stefano Lattarini |
Subject: |
Re: [PATCH] Testsuite: defs.in: work around zsh incompatibility w.r.t handling `$0' |
Date: |
Sat, 30 Jan 2010 15:20:16 +0100 |
User-agent: |
KMail/1.12.1 (Linux/2.6.30-2-686; KDE/4.3.2; i686; ; ) |
Hello automakers.
Since I'm rebasing some other patch series agains master, I took the
opportunity to do the same with this simpler patch, also amending it
to properly bump copyright years in the modified file. These are just
very minor changes over the previous patch.
Please let me now if you find this continuous tweaking and updating of
patches annoying.
Regards,
Stefano
From 11e3aeec48df498c43d890f7f9b2891e734dd98d Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Sat, 30 Jan 2010 14:01:39 +0100
Subject: [PATCH] Work around Zsh incompatibility w.r.t handling `$0' (testsuite
related)
* tests/README (Supported shells): When describing the manual
workaround about the Zsh incompatibility w.r.t the handling of
the special variable `$0', tell that it is now needed only with
Zsh3.
* tests/defs.in: For Zsh4, work around the incompatibility in the
way Zsh deal with the special variable `$0' (the workaround uses
the Zsh special variable `$functrace').
For Zsh 3, abort the script if the option `FUNCTION_ARGZERO' is
on.
Also, updated copyright years.
---
ChangeLog | 15 +++++++++++++++
tests/README | 12 +++++++-----
tests/defs.in | 35 +++++++++++++++++++++++++++++------
3 files changed, 51 insertions(+), 11 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index da01f8f..d2ed643 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2009-01-30 Stefano Lattarini <address@hidden>
+
+ In the testsuite: try to work around Zsh incompatibility w.r.t
+ the handling of the special variable `$0'.
+ * tests/README (Supported shells): When describing the manual
+ workaround about the Zsh incompatibility w.r.t the handling of
+ the special variable `$0', tell that it is now needed only with
+ Zsh3.
+ * tests/defs.in: For Zsh4, work around the incompatibility in the
+ way Zsh deal with the special variable `$0' (the workaround uses
+ the Zsh special variable `$functrace').
+ For Zsh 3, abort the script if the option `FUNCTION_ARGZERO' is
+ on.
+ Also, updated copyright years.
+
2010-01-24 Ralf Wildenhues <address@hidden>
Fix silent-rules output for disabled dependency tracking.
diff --git a/tests/README b/tests/README
index d494b10..577686a 100644
--- a/tests/README
+++ b/tests/README
@@ -71,16 +71,18 @@ Supported shells
However, some care must be used with Zsh, since, when not directly
starting in Bourne-compatibility mode, it has some incompatibilities
- in the handling of `$0' which conflict with our usage, and which have
- no easy workaround. Thus, if you want to run a test script, say
- foo.test, with Zsh, you *can't* simply do `zsh foo.test', but you
+ in the handling of `$0' which conflict with our usage. Our testsuite
+ can automatically work around these incompatibilities when a version
+ 4.x or later of Zsh is used, but unfortunately not when an older (3.x)
+ version of Zsh is used. Thus, if you want to run a test script, say
+ foo.test, with Zsh 3.x, you *can't* simply do `zsh foo.test', but you
*must* resort to:
zsh -o no_function_argzero foo.test
- Note that this problem does not occur if zsh is executed through a
+ Note that this problem does not occur if Zsh is executed through a
symlink with a basename of `sh', since in that case it starts
in Bourne compatibility mode. So you should be perfectly safe when
- /bin/sh is zsh.
+ /bin/sh is zsh, even a it's only a 3.x version.
Reporting failures
diff --git a/tests/defs.in b/tests/defs.in
index 6eec344..cf031c9 100644
--- a/tests/defs.in
+++ b/tests/defs.in
@@ -2,7 +2,7 @@
# @configure_input@
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 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
@@ -21,7 +21,7 @@
# Tom Tromey <address@hidden>
# Be more Bourne compatible.
-# (Snippet copied from configure's initialization in Autoconf 2.64)
+# (Snippet inspired to configure's initialization in Autoconf 2.64)
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
@@ -30,7 +30,30 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null
2>&1; then
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
+ # Zsh, when not directly starting in Bourne-compatibility mode, has some
+ # incompatibilities in the handling of `$0' which conflict with our usage
+ # (e.g., `$0' inside a file sourced with the `.' builtin is temporarly
+ # set to the name of the sourced file). Work around this when possible,
+ # otherwise abort the script.
+ # Note that a bug in some versions of Zsh prevents us from resetting $0
+ # in a sourced script, so the use of $argv0. For more info see:
+ # <http://www.zsh.org/mla/workers/2009/msg01140.html>
+ if [[ "$0" = *.'test' ]]; then
+ # Good, FUNCTION_ARGZERO option was already off when this file was
+ # sourced. Thus we've nothing to do.
+ argv0=$0
+ elif test -n "${functrace[-1]}"; then
+ # FUNCTION_ARGZERO option was on, but we have a easy workaround.
+ argv0=${functrace[-1]%:*}
+ else
+ # Give up.
+ echo "$0: (Zsh version $ZSH_VERSION) cannot determine the" \
+ "path of running test script" >&2
+ echo "$0:$LINENO: *** ABORT ***" >&2
+ exit 99
+ fi
else
+ argv0=$0
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
@@ -42,8 +65,8 @@ test -f ./defs || {
if test -z "$srcdir"; then
# compute $srcdir.
- srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'`
- test "$srcdir" = $0 && srcdir=.
+ srcdir=`echo "$argv0" | sed -e 's,/[^\\/]*$,,'`
+ test "$srcdir" = $argv0 && srcdir=.
else :; fi
# Ensure $srcdir is set correctly.
@@ -52,7 +75,7 @@ test -f "$srcdir/defs.in" || {
exit 1
}
-me=`echo "$0" | sed -e 's,.*[\\/],,;s/\.test$//'`
+me=`echo "$argv0" | sed -e 's,.*[\\/],,;s/\.test$//'`
# Make sure we override the user shell.
SHELL='@SHELL@'
@@ -321,7 +344,7 @@ unset TEST_LOGS
unset RECHECK_LOGS
unset VERBOSE
-echo "=== Running test $0"
+echo "=== Running test $argv0"
# We might need extra macros, e.g., from Libtool or Gettext.
# Find them on the system.
--
1.6.5
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] Testsuite: defs.in: work around zsh incompatibility w.r.t handling `$0',
Stefano Lattarini <=