Signed-off-by: Richard Hansen <rhansen@xxxxxxx> --- On 2014-05-29 15:02, Thomas Rast wrote: > Richard Hansen <rhansen@xxxxxxx> writes: > >> These are the same tests as in t9903, but run in zsh instead of bash. >> >> Signed-off-by: Richard Hansen <rhansen@xxxxxxx> >> --- >> 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html