Signed-off-by: Richard Hansen <[email protected]>
---
On 2014-05-29 15:02, Thomas Rast wrote:
> Richard Hansen <[email protected]> writes:
>
>> These are the same tests as in t9903, but run in zsh instead of bash.
>>
>> Signed-off-by: Richard Hansen <[email protected]>
>> ---
>> t/lib-zsh.sh | 30 ++++++++++++++++++++++++++++++
>> t/t9904-zsh-prompt.sh | 10 ++++++++++
>> 2 files changed, 40 insertions(+)
>> create mode 100644 t/lib-zsh.sh
>> create mode 100755 t/t9904-zsh-prompt.sh
>
> This doesn't appear to work in valgrind mode:
>
> $ ./t9904-zsh-prompt.sh --valgrind
> error: Test script did not set test_description.
>
> t9903 however works. I'm not sure how much of a difference it makes,
> but: I use bash as my shell and as /bin/sh, but I do have zsh installed.
>
> Can you look into it?
*sigh* By default, Zsh munges $0 whenever a function is called or a
file is sourced, with no (immediately obvious) way to get the original
value of $0. This fixup causes that feature to be temporarily turned
off so that test-lib.sh does the right thing when it execs $0.
Thank you for finding this bug!
-Richard
t/lib-zsh.sh | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/t/lib-zsh.sh b/t/lib-zsh.sh
index fa6fcd9..ab4bef2 100644
--- a/t/lib-zsh.sh
+++ b/t/lib-zsh.sh
@@ -2,17 +2,23 @@
# run under Zsh; primarily intended for tests of the git-prompt.sh
# script.
-if test -n "$ZSH_VERSION" && test -z "$POSIXLY_CORRECT"; then
+if test -n "$ZSH_VERSION" && test -z "$POSIXLY_CORRECT" && [[ ! -o
FUNCTION_ARGZERO ]]; then
true
elif command -v zsh >/dev/null 2>&1; then
unset POSIXLY_CORRECT
- exec zsh "$0" "$@"
+ # Run Zsh with the FUNCTION_ARGZERO option disabled so that
+ # test-lib.sh sees the test script pathname when it examines
+ # $0 instead of "./lib-zsh.sh". (This works around a Zsh bug;
+ # 'emulate sh -c' should temporarily restore $0 to the POSIX
+ # specification for $0, but it doesn't.)
+ exec zsh +o FUNCTION_ARGZERO "$0" "$@"
else
echo '1..0 #SKIP skipping Zsh-specific tests; zsh not available'
exit 0
fi
-# ensure that we are in full-on Zsh mode
+# ensure that we are in full-on Zsh mode. note: this re-enables the
+# FUNCTION_ARGZERO option
emulate -R zsh || exit 1
shellname=Zsh
@@ -27,4 +33,7 @@ set_ps1_format_vars () {
c_clear='%%f'
}
+# note: although the FUNCTION_ARGZERO option is currently enabled, sh
+# emulation mode temporarily turns it off ($0 is left alone when
+# sourcing test-lib.sh)
emulate sh -c '. ./test-lib.sh'
--
2.0.0
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html