Merge branch 'sg/test-bool-env'
Recently we have declared that GIT_TEST_* variables take the usual boolean values (it used to be that some used "non-empty means true" and taking GIT_TEST_VAR=YesPlease as true); make sure we notice and fail when non-bool strings are given to these variables. * sg/test-bool-env: t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
This commit is contained in:
@ -156,7 +156,7 @@ fi
|
|||||||
|
|
||||||
export DEVELOPER=1
|
export DEVELOPER=1
|
||||||
export DEFAULT_TEST_TARGET=prove
|
export DEFAULT_TEST_TARGET=prove
|
||||||
export GIT_TEST_CLONE_2GB=YesPlease
|
export GIT_TEST_CLONE_2GB=true
|
||||||
|
|
||||||
case "$jobname" in
|
case "$jobname" in
|
||||||
linux-clang|linux-gcc)
|
linux-clang|linux-gcc)
|
||||||
|
9
t/README
9
t/README
@ -982,6 +982,15 @@ library for your script to use.
|
|||||||
output to the downstream---unlike the real version, it generates
|
output to the downstream---unlike the real version, it generates
|
||||||
only up to 99 lines.
|
only up to 99 lines.
|
||||||
|
|
||||||
|
- test_bool_env <env-variable-name> <default-value>
|
||||||
|
|
||||||
|
Given the name of an environment variable with a bool value,
|
||||||
|
normalize its value to a 0 (true) or 1 (false or empty string)
|
||||||
|
return code. Return with code corresponding to the given default
|
||||||
|
value if the variable is unset.
|
||||||
|
Abort the test script if either the value of the variable or the
|
||||||
|
default are not valid bool values.
|
||||||
|
|
||||||
|
|
||||||
Prerequisites
|
Prerequisites
|
||||||
-------------
|
-------------
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#
|
#
|
||||||
# test_done
|
# test_done
|
||||||
|
|
||||||
if ! git env--helper --type=bool --default=true --exit-code GIT_TEST_GIT_DAEMON
|
if ! test_bool_env GIT_TEST_GIT_DAEMON true
|
||||||
then
|
then
|
||||||
skip_all="git-daemon testing disabled (unset GIT_TEST_GIT_DAEMON to enable)"
|
skip_all="git-daemon testing disabled (unset GIT_TEST_GIT_DAEMON to enable)"
|
||||||
test_done
|
test_done
|
||||||
|
@ -69,7 +69,7 @@ svn_cmd () {
|
|||||||
maybe_start_httpd () {
|
maybe_start_httpd () {
|
||||||
loc=${1-svn}
|
loc=${1-svn}
|
||||||
|
|
||||||
if git env--helper --type=bool --default=false --exit-code GIT_TEST_SVN_HTTPD
|
if test_bool_env GIT_TEST_SVN_HTTPD false
|
||||||
then
|
then
|
||||||
. "$TEST_DIRECTORY"/lib-httpd.sh
|
. "$TEST_DIRECTORY"/lib-httpd.sh
|
||||||
LIB_HTTPD_SVN="$loc"
|
LIB_HTTPD_SVN="$loc"
|
||||||
@ -104,7 +104,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
require_svnserve () {
|
require_svnserve () {
|
||||||
if ! git env--helper --type=bool --default=false --exit-code GIT_TEST_SVNSERVE
|
if ! test_bool_env GIT_TEST_SVNSERVE false
|
||||||
then
|
then
|
||||||
skip_all='skipping svnserve test. (set $GIT_TEST_SVNSERVE to enable)'
|
skip_all='skipping svnserve test. (set $GIT_TEST_SVNSERVE to enable)'
|
||||||
test_done
|
test_done
|
||||||
|
@ -41,7 +41,7 @@ then
|
|||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! git env--helper --type=bool --default=true --exit-code GIT_TEST_HTTPD
|
if ! test_bool_env GIT_TEST_HTTPD true
|
||||||
then
|
then
|
||||||
skip_all="Network testing disabled (unset GIT_TEST_HTTPD to enable)"
|
skip_all="Network testing disabled (unset GIT_TEST_HTTPD to enable)"
|
||||||
test_done
|
test_done
|
||||||
|
@ -917,6 +917,40 @@ test_expect_success 'test_oid can look up data for SHA-256' '
|
|||||||
test "$hexsz" -eq 64
|
test "$hexsz" -eq 64
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'test_bool_env' '
|
||||||
|
(
|
||||||
|
sane_unset envvar &&
|
||||||
|
|
||||||
|
test_bool_env envvar true &&
|
||||||
|
! test_bool_env envvar false &&
|
||||||
|
|
||||||
|
envvar= &&
|
||||||
|
export envvar &&
|
||||||
|
! test_bool_env envvar true &&
|
||||||
|
! test_bool_env envvar false &&
|
||||||
|
|
||||||
|
envvar=true &&
|
||||||
|
test_bool_env envvar true &&
|
||||||
|
test_bool_env envvar false &&
|
||||||
|
|
||||||
|
envvar=false &&
|
||||||
|
! test_bool_env envvar true &&
|
||||||
|
! test_bool_env envvar false &&
|
||||||
|
|
||||||
|
envvar=invalid &&
|
||||||
|
# When encountering an invalid bool value, test_bool_env
|
||||||
|
# prints its error message to the original stderr of the
|
||||||
|
# test script, hence the redirection of fd 7, and aborts
|
||||||
|
# with "exit 1", hence the subshell.
|
||||||
|
! ( test_bool_env envvar true ) 7>err &&
|
||||||
|
grep "error: test_bool_env requires bool values" err &&
|
||||||
|
|
||||||
|
envvar=true &&
|
||||||
|
! ( test_bool_env envvar invalid ) 7>err &&
|
||||||
|
grep "error: test_bool_env requires bool values" err
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Basics of the basics
|
# Basics of the basics
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ test_expect_success 'ls-remote --symref omits filtered-out matches' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
test_lazy_prereq GIT_DAEMON '
|
test_lazy_prereq GIT_DAEMON '
|
||||||
git env--helper --type=bool --default=true --exit-code GIT_TEST_GIT_DAEMON
|
test_bool_env GIT_TEST_GIT_DAEMON true
|
||||||
'
|
'
|
||||||
|
|
||||||
# This test spawns a daemon, so run it only if the user would be OK with
|
# This test spawns a daemon, so run it only if the user would be OK with
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
test_description='Test cloning a repository larger than 2 gigabyte'
|
test_description='Test cloning a repository larger than 2 gigabyte'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if test -z "$GIT_TEST_CLONE_2GB"
|
if ! test_bool_env GIT_TEST_CLONE_2GB false
|
||||||
then
|
then
|
||||||
say 'Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t'
|
say 'Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t'
|
||||||
else
|
else
|
||||||
|
@ -1186,6 +1186,34 @@ perl () {
|
|||||||
command "$PERL_PATH" "$@" 2>&7
|
command "$PERL_PATH" "$@" 2>&7
|
||||||
} 7>&2 2>&4
|
} 7>&2 2>&4
|
||||||
|
|
||||||
|
# Given the name of an environment variable with a bool value, normalize
|
||||||
|
# its value to a 0 (true) or 1 (false or empty string) return code.
|
||||||
|
#
|
||||||
|
# test_bool_env GIT_TEST_HTTPD <default-value>
|
||||||
|
#
|
||||||
|
# Return with code corresponding to the given default value if the variable
|
||||||
|
# is unset.
|
||||||
|
# Abort the test script if either the value of the variable or the default
|
||||||
|
# are not valid bool values.
|
||||||
|
|
||||||
|
test_bool_env () {
|
||||||
|
if test $# != 2
|
||||||
|
then
|
||||||
|
BUG "test_bool_env requires two parameters (variable name and default value)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git env--helper --type=bool --default="$2" --exit-code "$1"
|
||||||
|
ret=$?
|
||||||
|
case $ret in
|
||||||
|
0|1) # unset or valid bool value
|
||||||
|
;;
|
||||||
|
*) # invalid bool value or something unexpected
|
||||||
|
error >&7 "test_bool_env requires bool values both for \$$1 and for the default fallback"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|
||||||
# Exit the test suite, either by skipping all remaining tests or by
|
# Exit the test suite, either by skipping all remaining tests or by
|
||||||
# exiting with an error. If our prerequisite variable $1 falls back
|
# exiting with an error. If our prerequisite variable $1 falls back
|
||||||
# on a default assume we were opportunistically trying to set up some
|
# on a default assume we were opportunistically trying to set up some
|
||||||
@ -1194,7 +1222,7 @@ perl () {
|
|||||||
# The error/skip message should be given by $2.
|
# The error/skip message should be given by $2.
|
||||||
#
|
#
|
||||||
test_skip_or_die () {
|
test_skip_or_die () {
|
||||||
if ! git env--helper --type=bool --default=false --exit-code $1
|
if ! test_bool_env "$1" false
|
||||||
then
|
then
|
||||||
skip_all=$2
|
skip_all=$2
|
||||||
test_done
|
test_done
|
||||||
|
@ -1406,19 +1406,19 @@ yes () {
|
|||||||
# The GIT_TEST_FAIL_PREREQS code hooks into test_set_prereq(), and
|
# The GIT_TEST_FAIL_PREREQS code hooks into test_set_prereq(), and
|
||||||
# thus needs to be set up really early, and set an internal variable
|
# thus needs to be set up really early, and set an internal variable
|
||||||
# for convenience so the hot test_set_prereq() codepath doesn't need
|
# for convenience so the hot test_set_prereq() codepath doesn't need
|
||||||
# to call "git env--helper". Only do that work if needed by seeing if
|
# to call "git env--helper" (via test_bool_env). Only do that work
|
||||||
# GIT_TEST_FAIL_PREREQS is set at all.
|
# if needed by seeing if GIT_TEST_FAIL_PREREQS is set at all.
|
||||||
GIT_TEST_FAIL_PREREQS_INTERNAL=
|
GIT_TEST_FAIL_PREREQS_INTERNAL=
|
||||||
if test -n "$GIT_TEST_FAIL_PREREQS"
|
if test -n "$GIT_TEST_FAIL_PREREQS"
|
||||||
then
|
then
|
||||||
if git env--helper --type=bool --default=0 --exit-code GIT_TEST_FAIL_PREREQS
|
if test_bool_env GIT_TEST_FAIL_PREREQS false
|
||||||
then
|
then
|
||||||
GIT_TEST_FAIL_PREREQS_INTERNAL=true
|
GIT_TEST_FAIL_PREREQS_INTERNAL=true
|
||||||
test_set_prereq FAIL_PREREQS
|
test_set_prereq FAIL_PREREQS
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
test_lazy_prereq FAIL_PREREQS '
|
test_lazy_prereq FAIL_PREREQS '
|
||||||
git env--helper --type=bool --default=0 --exit-code GIT_TEST_FAIL_PREREQS
|
test_bool_env GIT_TEST_FAIL_PREREQS false
|
||||||
'
|
'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1477,7 +1477,7 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
test_lazy_prereq C_LOCALE_OUTPUT '
|
test_lazy_prereq C_LOCALE_OUTPUT '
|
||||||
! git env--helper --type=bool --default=0 --exit-code GIT_TEST_GETTEXT_POISON
|
! test_bool_env GIT_TEST_GETTEXT_POISON false
|
||||||
'
|
'
|
||||||
|
|
||||||
if test -z "$GIT_TEST_CHECK_CACHE_TREE"
|
if test -z "$GIT_TEST_CHECK_CACHE_TREE"
|
||||||
|
Reference in New Issue
Block a user