Jeff King <[email protected]> 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 <[email protected]>
#
-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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html