test-lib-functions: support "test_config -C <dir> ..."
If used in a subshell, test_config cannot unset variables at the end of a test. This is a problem when testing submodules because we do not want to "cd" at to top level of a test script in order to run the command inside the submodule. Add a "-C" option to test_config (and test_unconfig) so that test_config can be kept outside subshells and still affect subrepositories. Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
c545bc6266
commit
5fafc07fca
@ -201,7 +201,14 @@ test_chmod () {
|
|||||||
|
|
||||||
# Unset a configuration variable, but don't fail if it doesn't exist.
|
# Unset a configuration variable, but don't fail if it doesn't exist.
|
||||||
test_unconfig () {
|
test_unconfig () {
|
||||||
git config --unset-all "$@"
|
config_dir=
|
||||||
|
if test "$1" = -C
|
||||||
|
then
|
||||||
|
shift
|
||||||
|
config_dir=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
git ${config_dir:+-C "$config_dir"} config --unset-all "$@"
|
||||||
config_status=$?
|
config_status=$?
|
||||||
case "$config_status" in
|
case "$config_status" in
|
||||||
5) # ok, nothing to unset
|
5) # ok, nothing to unset
|
||||||
@ -213,8 +220,15 @@ test_unconfig () {
|
|||||||
|
|
||||||
# Set git config, automatically unsetting it after the test is over.
|
# Set git config, automatically unsetting it after the test is over.
|
||||||
test_config () {
|
test_config () {
|
||||||
test_when_finished "test_unconfig '$1'" &&
|
config_dir=
|
||||||
git config "$@"
|
if test "$1" = -C
|
||||||
|
then
|
||||||
|
shift
|
||||||
|
config_dir=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
test_when_finished "test_unconfig ${config_dir:+-C '$config_dir'} '$1'" &&
|
||||||
|
git ${config_dir:+-C "$config_dir"} config "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
test_config_global () {
|
test_config_global () {
|
||||||
|
Reference in New Issue
Block a user