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

Re: [PATCH] tests: remove the GETTEXT_POISON compile-time option to test i18n marking

From
Michael J Gruber <git@grubix.eu>
Date
Apr 26, 2017, 09:17 UTC
Message-ID
<4bd88c83-1892-8fc2-981f-f31cfd1b4c87@grubix.eu>
In-Reply-To
<20170424110434.27689-1-avarab@gmail.com>
[Turns out I still can't operate gmail's web interface. Sorry for the dupe.]
2017-04-24 13:04 GMT+02:00 Ævar Arnfjörð Bjarmason <avarab@gmail.com>:
Show 75 quoted lines
> Remove the GETTEXT_POISON=YesPlease compile-time which turns all of
> git's LC_*=C output into strings like "# GETTEXT POISON #" instead of
> gettext(msgid).
>
> See commit bb946bba76 ("i18n: add GETTEXT_POISON to simulate
> unfriendly translator", 2011-02-22) for what this was originally
> intended for.
>
> This facility has been broken for quite a while and has been subjected
> to frequent bitrot. The initial idea behind it back when it was added
> in 2011 was to prevent the accidental translation of plumbing
> messages.
>
> This isn't a big concern anymore as git isn't mass-adding i18n
> messages for a newly developed i18n facility as it was back then,
> maintaining this facility incurs a burden, and in actuality this has
> often been broken long enough for potential plumbing messages to be
> translated & make their way into major releases anyway.
>
> Most of this patch consists of search/replacing the test suite for:
>
>     test_i18ngrep ! -> ! grep
>     test_i18ngrep   -> grep
>     test_i18ncmp    -> test_cmp
>
> 1. <AANLkTi=5MrU-JyeQ3UVNbVwzn-8FbstUXafgcQaLWXDB@mail.gmail.com>
>    (https://public-inbox.org/git/AANLkTi=5MrU-JyeQ3UVNbVwzn-8FbstUXafgcQaLWXDB@mail.gmail.com/)
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>
> On Mon, Apr 24, 2017 at 3:18 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Michael J Gruber <git@grubix.eu> writes:
>>
>>> Ævar Arnfjörð Bjarmason venit, vidit, dixit 20.04.2017 23:58:
>>>> As a refresh of everyone's memory (because mine needed it). This is a
>>>> feature I added back in 2011 when the i18n support was initially
>>>> added.
>>>>
>>>> There was concern at the time that we would inadvertently mark
>>>> plumbing messages for translation, particularly something in a shared
>>>> code path, and this was a way to hopefully smoke out those issues with
>>>> the test suite.
>>>>
>>>> However compiling with it breaks a couple of dozen tests, I stopped
>>>> digging when I saw some broke back in 2014.
>>>>
>>>> What should be done about this? I think if we're going to keep them
>>>> they need to be run regularly by something like Travis (Lars CC'd),
>>>> however empirical evidence suggests that not running them is just fine
>>>> too, so should we just remove support for this test mode?
>>>>
>>>> I don't care, but I can come up with the patch either way, but would
>>>> only be motivated to write the one-time fix for it if some CI system
>>>> is actually running them regularly, otherwise they'll just be subject
>>>> to bitrotting again.
>>>
>>> I use that switch when I change something that involves l10n, but
>>> usually I run specific tests only. To be honest: I have to make sure not
>>> to get confused by (nor forget one of) the build flag GETTEXT_POISON and
>>> the environment variable GIT_GETTEXT_POISON. I'm not sure I always
>>> tested what I meant to test...
>>
>> To be quite honest, I have always felt that we are just as likely
>> inadvertently use test_i18ncmp when we should use test_cmp (and vice
>> versa) as we would mark plumbing messages with _() by mistake with
>> this approach, and even with constant monitoring by something like
>> Travis, GETTEXT_POISON may be able to catch mistakes only some of
>> the time (i.e. when we do not make mistakes in writing our tests).
>> Without constant monitoring, I agree that the mechanism does not
>> work well to catch our mistakes.
>
> Here's an alternate patch to just remove it entirely. I think we
> should apply this instead, the only reason I sent the patch to fix it
> up was because of Michael's comment that he was occasionally using it.

Yes, I think test_i18ngrep and test_i18ncmp gave the impression that they are i18n-aware grep and cmp, whereas in fact they turned off these tese test lines completely. Combined with the fact that GETTEXT_POSON builds turned on GIT_GETTEXT_POISON, this sounds somewhat dangerous - we test more aspects of plumbing commands but turn off (some) tests for porcelain.

I'm still wondering wether we couldn't generate a test locale automatically by mangling the english strings (but preserving format specifiers). That way, tests that test porcelain output could require LANG=C while others could run in the mangled locale. (tt_TT is taken, though ;) )

Michael
Previous: Junio C HamanoNext: Ævar Arnfjörð Bjarmason
Message 20 of 21 in “[BUG] test suite broken with GETTEXT_POISON=YesPlease”
  1. Ævar Arnfjörð BjarmasonApr 20, 2017
  2. Lars SchneiderApr 21, 2017
  3. Ævar Arnfjörð BjarmasonApr 21, 2017
  4. tests: fix tests broken under GETTEXT_POISON=YesPleaseÆvar Arnfjörð Bjarmason, Apr 21, 2017
  5. Junio C HamanoApr 24, 2017
  6. Ævar Arnfjörð BjarmasonApr 24, 2017
  7. Junio C HamanoApr 25, 2017
  8. Ævar Arnfjörð BjarmasonApr 25, 2017
  9. Junio C HamanoApr 26, 2017
  10. Ævar Arnfjörð BjarmasonApr 26, 2017
  11. Duy NguyenApr 24, 2017
  12. Jeff KingApr 24, 2017
  13. Lars SchneiderApr 25, 2017
  14. Jeff KingApr 25, 2017
  15. Lars SchneiderApr 28, 2017
  16. Jeff KingApr 28, 2017
  17. Michael J GruberApr 21, 2017
  18. Ævar Arnfjörð BjarmasonApr 21, 2017
  19. Junio C HamanoApr 24, 2017
  20. Michael J GruberApr 26, 2017
  21. Ævar Arnfjörð BjarmasonApr 26, 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.