Subject: Re: [PATCH] config.c: remove last remnant of GIT_TEST_GETTEXT_POISON

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Thu, 25 Mar 2021 02:13:07 +0100

On Thu, Mar 25 2021, Jeff King wrote:

> On Thu, Mar 25, 2021 at 12:36:09AM +0100, Ævar Arnfjörð Bjarmason wrote:
>
>> Remove a use of GIT_TEST_GETTEXT_POISON added in f276e2a4694 (config:
>> improve error message for boolean config, 2021-02-11).
>> 
>> This was simultaneously in-flight with my d162b25f956 (tests: remove
>> support for GIT_TEST_GETTEXT_POISON, 2021-01-20) which removed the
>> rest of the GIT_TEST_GETTEXT_POISON code.
>
> Yay. :)
>
>> diff --git a/config.c b/config.c
>> index 6428393a414..870d9534def 100644
>> --- a/config.c
>> +++ b/config.c
>> @@ -1180,20 +1180,6 @@ static void die_bad_number(const char *name, const char *value)
>>  	}
>>  }
>>  
>> -NORETURN
>> -static void die_bad_bool(const char *name, const char *value)
>> -{
>> -	if (!strcmp(name, "GIT_TEST_GETTEXT_POISON"))
>> -		/*
>> -		 * We explicitly *don't* use _() here since it would
>> -		 * cause an infinite loop with _() needing to call
>> -		 * use_gettext_poison().
>> -		 */
>> -		die("bad boolean config value '%s' for '%s'", value, name);
>> -	else
>> -		die(_("bad boolean config value '%s' for '%s'"), value, name);
>> -}
>> -
>>  int git_config_int(const char *name, const char *value)
>>  {
>>  	int ret;
>> @@ -1268,7 +1254,7 @@ int git_config_bool(const char *name, const char *value)
>>  {
>>  	int v = git_parse_maybe_bool(value);
>>  	if (v < 0)
>> -		die_bad_bool(name, value);
>> +		die(_("bad boolean config value '%s' for '%s'"), value, name);
>>  	return v;
>>  }
>
> This code change looks good, but...
>
>> diff --git a/t/t1300-config.sh b/t/t1300-config.sh
>> index e0dd5d65ced..2280c2504ac 100755
>> --- a/t/t1300-config.sh
>> +++ b/t/t1300-config.sh
>> @@ -679,7 +679,7 @@ test_expect_success 'invalid unit boolean' '
>>  	git config commit.gpgsign "1true" &&
>>  	test_cmp_config 1true commit.gpgsign &&
>>  	test_must_fail git config --bool --get commit.gpgsign 2>actual &&
>> -	test_i18ngrep "bad boolean config value .1true. for .commit.gpgsign." actual
>> +	grep "bad boolean config value .1true. for .commit.gpgsign." actual
>>  '
>
> why are we losing test_i18ngrep here? The message is still marked for
> translation. I know we've discussed dropping all of the test_i18n
> helpers, but that seems unrelated to the rest of the patch.

For new tests we're suggesting not to use it, so while I'm holding off
on some general s/test_i18ngrep/grep/ refactoring, it seemed natural to
adjust the test added by the commit whose code I'm modifying.

It also shows reviewers that there is such a test, so e.g. I didn't
invert the name/value parameters or something in refactoring this.