Ville Skyttä <ville.skytta@xxxxxx> writes: > When the shell is in "nounset" or "set -u" mode, referencing unset or > null variables results in an error. Protect $ZSH_VERSION and > $BASH_VERSION against that. > local ps1_expanded=yes > - [ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no > - [ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no > + [ -z "${ZSH_VERSION-}" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no > + [ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no I wonder if we can teach t9903 to run (at least) some parts of the completion script under "set -u" to catch these automatically without a report from an end user. With the attached "just started to scratch the surface" patch to test-lib.sh and fix by Ville to the git-prompt.sh script, we find another one. ...contrib/completion/git-prompt.sh: line 481: short_sha: unbound variable Ville, I think you want to take the "git-prompt.sh" part from the following and replace it with your patch. Others, I am not sure how seriously we would want to support those who use "set -u"; the damage to test-lib.sh so far (see below) does not look _too_ bad, but the reason why I have "set -u" after including lib-bash.sh is because it will trigger a lot more errors while lib-bash and test-lib do their preparation. contrib/completion/git-prompt.sh | 5 +++-- t/t9903-bash-prompt.sh | 2 ++ t/test-lib.sh | 8 +++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index 64219e6..ed994a9 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@ -355,8 +355,8 @@ __git_ps1 () # incorrect.) # local ps1_expanded=yes - [ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no - [ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no + [ -z "${ZSH_VERSION-}" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no + [ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no local repo_info rev_parse_exit_code repo_info="$(git rev-parse --git-dir --is-inside-git-dir \ @@ -369,6 +369,7 @@ __git_ps1 () fi local short_sha + short_sha= if [ "$rev_parse_exit_code" = "0" ]; then short_sha="${repo_info##*$'\n'}" repo_info="${repo_info%$'\n'*}" diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh index 0db4469..96b5ff8 100755 --- a/t/t9903-bash-prompt.sh +++ b/t/t9903-bash-prompt.sh @@ -7,6 +7,8 @@ test_description='test git-specific bash prompt functions' . ./lib-bash.sh +set -u + . "$GIT_BUILD_DIR/contrib/completion/git-prompt.sh" actual="$TRASH_DIRECTORY/actual" diff --git a/t/test-lib.sh b/t/test-lib.sh index 0055ebb..36ca13e 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -186,6 +186,9 @@ test "x$TERM" != "xdumb" && ( ) && color=t +HARNESS_ACTIVE= quiet= verbose_only= run_list= trace= +: ${GIT_SKIP_TESTS=} + while test "$#" -ne 0 do case "$1" in @@ -585,7 +588,7 @@ test_eval_ () { test_run_ () { test_cleanup=: - expecting_failure=$2 + expecting_failure=${2-} if test "${GIT_TEST_CHAIN_LINT:-1}" != 0; then # turn off tracing for this test-eval, as it simply creates @@ -750,6 +753,8 @@ test_done () { esac } +GIT_VALGRIND= + if test -n "$valgrind" then make_symlink () { @@ -902,6 +907,7 @@ fi # in subprocesses like git equals our $PWD (for pathname comparisons). cd -P "$TRASH_DIRECTORY" || exit 1 +skip_all= this_test=${0##*/} this_test=${this_test%%-*} if match_pattern_list "$this_test" $GIT_SKIP_TESTS -- 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