Jeff King <peff@xxxxxxxx> writes: > test_normalize_tristate GIT_TEST_DAEMON Heh, great minds think alike. This is what I am playing with, without committing (because I do like your "ask config if this is a kind of various boolean 'false' representations, which I haven't managed to add to it). t/lib-git-daemon.sh | 2 +- t/lib-httpd.sh | 2 +- t/test-lib-functions.sh | 45 +++++++++++++++++++++++++++------------------ 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh index 36106de..615bf5d 100644 --- a/t/lib-git-daemon.sh +++ b/t/lib-git-daemon.sh @@ -16,7 +16,7 @@ # stop_git_daemon # test_done -GIT_TEST_GIT_DAEMON=$(test_tristate "$GIT_TEST_GIT_DAEMON") +test_tristate GIT_TEST_GIT_DAEMON if test "$GIT_TEST_GIT_DAEMON" = false then skip_all="git-daemon testing disabled (unset GIT_TEST_GIT_DAEMON to enable)" diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh index 583fb14..f9c2e22 100644 --- a/t/lib-httpd.sh +++ b/t/lib-httpd.sh @@ -30,7 +30,7 @@ # Copyright (c) 2008 Clemens Buchacher <drizzd@xxxxxx> # -GIT_TEST_HTTPD=$(test_tristate "$GIT_TEST_HTTPD") +test_tristate GIT_TEST_HTTPD if test "$GIT_TEST_HTTPD" = false then skip_all="Network testing disabled (unset GIT_TEST_HTTPD to enable)" diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 3cc09c0..21c5214 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -716,27 +716,36 @@ perl () { command "$PERL_PATH" "$@" } -# Normalize the value given in $1 to one of "true", "false", or "auto". The -# result is written to stdout. E.g.: +# Given a variable $1, normalize the value of it to one of "true", +# "false", or "auto" and store the result to it. # -# GIT_TEST_HTTPD=$(test_tristate "$GIT_TEST_HTTPD") +# test_tristate GIT_TEST_HTTPD # +# A variable set to an empty string is set to 'false'. +# A variable set to 'false' or 'auto' keeps its value. +# Anything else is set to 'true'. +# An unset variable defaults to 'auto'. +# +# The last rule is to allow people to set the variable to an empty +# string and export it to decline testing the particular feature +# for versions both before and after this change. We used to treat +# both unset and empty variable as a signal for "do not test" and +# took any non-empty string as "please test". + test_tristate () { - case "$1" in - ""|auto) - echo auto - ;; - *) - # Rely on git-config to handle all the variants of - # true/1/on/etc that we allow. - if ! git -c magic.hack="$1" config --bool magic.hack 2>/dev/null - then - # If git-config failed, it was some non-bool value like - # YesPlease. Default this to "true" for historical - # compatibility. - echo true - fi - esac + if eval "test x\"\${$1+isset}\" = xisset" + then + # explicitly set + eval " + case \"\$$1\" in + '') $1=false ;; + false | auto) ;; + *) $1=true ;; + esac + " + else + eval "$1=auto" + fi } # Exit the test suite, either by skipping all remaining tests or by -- 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