Tanay Abhra writes:
> Expose the `config_set` C API as a set of simple commands in order to
> facilitate testing. Add tests for the `config_set` API as well as for
> `git_config_get_*()` family for the usual config files.
>
> Signed-off-by: Matthieu Moy
> Signed-off-by: Tanay Abhra
> ---
> .gitignore| 1 +
> Makefile | 1 +
> t/t1308-config-set.sh | 212
> ++
> test-config.c | 140 +
> 4 files changed, 354 insertions(+)
> create mode 100755 t/t1308-config-set.sh
> create mode 100644 test-config.c
>
> diff --git a/.gitignore b/.gitignore
> index 42294e5..7677533 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -177,6 +177,7 @@
> /gitweb/static/gitweb.min.*
> /test-chmtime
> /test-ctype
> +/test-config
> /test-date
> /test-delta
> /test-dump-cache-tree
> diff --git a/Makefile b/Makefile
> index b92418d..e070eb8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -549,6 +549,7 @@ PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS))
>
> TEST_PROGRAMS_NEED_X += test-chmtime
> TEST_PROGRAMS_NEED_X += test-ctype
> +TEST_PROGRAMS_NEED_X += test-config
> TEST_PROGRAMS_NEED_X += test-date
> TEST_PROGRAMS_NEED_X += test-delta
> TEST_PROGRAMS_NEED_X += test-dump-cache-tree
> diff --git a/t/t1308-config-set.sh b/t/t1308-config-set.sh
> new file mode 100755
> index 000..94085eb
> --- /dev/null
> +++ b/t/t1308-config-set.sh
> @@ -0,0 +1,212 @@
> +#!/bin/sh
> +
> +test_description='Test git config-set API in different settings'
> +
> +. ./test-lib.sh
> +
> +# 'check_config get_* section.key value' verifies that the entry for
> +# section.key is 'value'
> +check_config () {
> + case "$1" in
> + expect_code)
> + if [ "$#" -lt 5 ];
> + then
Spell out "test" and drop unnecessary semicolon, i.e.
if test $# -lt 5
then
> + >expect
> + else
> + printf "%s\n" "$5" >expect
The other "expecting success" side of this function allows to expect
more than one line of output, but this one only allows you to expect
at most one line? Why?
> + fi &&
> + test_expect_code "$2" test-config "$3" "$4" >actual
> + ;;
> + *)
> + op=$1 key=$2 &&
> + shift &&
> + shift &&
> + printf "%s\n" "$@" >expect &&
> + test-config "$op" "$key" >actual
> + ;;
> + esac &&
> + test_cmp expect actual
Perhaps you meant to say something like this instead?
if test "$1" = expect_code
then
expect_code="$2" && shift && shift
else
expect_code=0
fi &&
op=$1 key=$2 && shift && shift
if test $# != 0
then
printf "%s\n" "$@"
fi >expect &&
test_expect_code $expet_code test-config "$op" "$key" >actual &&
test_cmp expect actual
I dunno.
> +test_expect_success 'setup default config' '
> + cat >.git/config <<\EOF
So the default .git/config that was prepared by "git init" is
discarded and replaced with this? Shouldn't it be
cat >>.git/config <<\EOF
instead?
> +test_expect_success 'find multiple values' '
> + cat >expect <<-\EOF &&
> + sam
> + bat
> + hask
> + EOF
> + test-config get_value_multi "case.baz">actual &&
> + test_cmp expect actual
> +'
Hmmm, wasn't the whole point of the helper to allow us to make
things like the above into a one-liner, perhaps like this?
check_config get_value_multi case.baz sam bat hask
I suspect the same applies to most if not all uses of test-config
in the remainder of this patch.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html