git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [add-default-config 5/5] fix return code on default + add tests

From
Jeff King <peff@peff.net>
Date
Nov 12, 2017, 16:04 UTC
Message-ID
<20171112160401.qeimqv234ojben5e@sigill.intra.peff.net>
In-Reply-To
<0102015fb0bf3103-7448dcb3-ec22-4e67-8995-5cbea349263f-000000@eu-west-1.amazonses.com>
On Sun, Nov 12, 2017 at 03:00:40PM +0000, Soukaina NAIT HMID wrote:
Show 18 quoted lines
> diff --git a/builtin/config.c b/builtin/config.c
> index eab81c5627091..29c5f55f27a57 100644
> --- a/builtin/config.c
> +++ b/builtin/config.c
> @@ -261,9 +261,12 @@ static int get_value(const char *key_, const char *regex_)
>  
>  	if (values.nr == 0 && default_value) {
>  		if(types == TYPE_INT || types == TYPE_BOOL || types == TYPE_BOOL_OR_INT || types == TYPE_PATH ) {
> -			char* xstr = normalize_value(key, default_value);
> -			fwrite(xstr, 1, strlen(xstr), stdout);
> -			fwrite("\n", 1, 1, stdout);
> +			if(strlen(default_value)) {
> +				char* xstr = normalize_value(key, default_value);
> +				fwrite(xstr, 1, strlen(xstr), stdout);
> +				fwrite("\n", 1, 1, stdout);
> +				ret = 0;
> +			}
>  		}

OK, fixing up the return value is a good thing (though again, I think if we place our default_value in the list earlier that will just fall out naturally).

I'm not sure why we care if the default_value string is empty or not. It should be allowed to default to an empty string, I'd think.

Show 5 quoted lines
> diff --git a/t/t9904-default.sh b/t/t9904-default.sh
> new file mode 100755
> index 0000000000000..8e838f512298b
> --- /dev/null
> +++ b/t/t9904-default.sh

We usually try to group tests with similar-numbered ones. Most of the config tests are in the t13xx area. Probably "t1310-config-default.sh" would be the right place (or if there really are just a few tests, which I think may be all we need, they can just go into t1300).

Show 6 quoted lines
> +boolean()
> +{
> +	slot=$([ "$#" == 3 ] && echo $3 || echo "no.such.slot") &&
> +	actual=$(git config --default "$1" --bool "$slot") &&
> +	test "$actual" = "$2"
> +}

A minor style nit, but we usually prefer "test" instead of "[" for conditionals. It took me a while to figure out how this function was meant to be used. It might be worth adding a comment. Though most of it was due to the first line, which I think can just be written as:

  slot=${3:-no.such.slot}
(or you could even just write that directly in the second line).
That's a bit more idiomatic for our shell scripts.
> +test_expect_success 'empty value for boolean' '
> +	invalid_boolean ""
> +'

There are a lot of tests here about type interpretation, but I think that should be largely orthogonal to the --default feature. Once it's written in a way that's independent of the type, I think we can assume that if "--default" works for one type, it should work with others without being exhaustive.

So I think what we really want to test from this series is:
  1. --default kicks in when no matching config is found
  2. --default does not kick in when config _is_ found
  3. (optional) we complain about --default with non-get actions
  4. --color works as a type for "get" operations
  5. --color is not normalized for "set" operations; if you do:
       git config --color some.key red
     we should write "red" into the config file, not the ANSI codes.

I know the reason you were looking into t4026 originally because it was the only spot that used --get-color in the whole test suite. But its use of "--get-color" is largely orthogonal to what it's testing. It cares about parsing the specific colors, but just didn't have another easy way to convince Git to parse a bunch of colors without having to pick the results out of diff or log output.

I'd be OK with converting that to use "--color --default" instead of --get-color, but if we do so we should make sure that there's some coverage of "--get-color" elsewhere in the config tests (not checking every possible color variation, but just making sure that it can actually look up any color with it).

-Peff
Previous: Soukaina NAIT HMIDNext: Soukaina NAIT HMID
Message 7 of 14 in “[add-default-config 1/5] add --color option to git config”
  1. Soukaina NAIT HMIDNov 12, 2017
  2. 2/5 adding default to colorSoukaina NAIT HMID, Nov 12, 2017
  3. Jeff KingNov 12, 2017
  4. Junio C HamanoNov 13, 2017
  5. Jeff KingNov 13, 2017
  6. 5/5 fix return code on default + add testsSoukaina NAIT HMID, Nov 12, 2017
  7. Jeff KingNov 12, 2017
  8. 4/5 add defaults for path/int/boolSoukaina NAIT HMID, Nov 12, 2017
  9. Jeff KingNov 12, 2017
  10. 3/5 add same test for new command format with --default and --colorSoukaina NAIT HMID, Nov 12, 2017
  11. Jeff KingNov 12, 2017
  12. Jeff KingNov 12, 2017
  13. [add-default-config] add --default option to git config.Soukaina NAIT HMID, Nov 28, 2017
  14. Philip OakleyDec 2, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.