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