Skip to content
  • Jeff King's avatar
    git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME · 37380315
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    Running "make NO_GETTEXT=1 GETTEXT_POISON=1" currently fails
    t0205.
    
    While it might seem nonsensical at first glance to both
    poison and disable gettext, it's useful to be able to do a
    poison test-run on a system that doesn't have gettext at
    all. And it works fine for C programs; the problem is only
    with the shell code.
    
    The issue is that we check the baked-in USE_GETTEXT_SCHEME
    value before GETTEXT_POISON. And when NO_GETTEXT is set, the
    Makefile sets USE_GETTEXT_SCHEME to "fallthrough".
    
    So one fix would be to have the Makefile just set
    USE_GETTEXT_SCHEME to "poison" if GETTEXT_POISON is set.
    But there are two problems with that:
    
      1. USE_GETTEXT_SCHEME is actually a user-facing knob, so
         conceivably somebody could override it with:
    
           make USE_GETTEXT_SCHEME=gnu GETTEXT_POISON=1
    
         which would do the wrong thing (though that's much less
         likely than them having the variable set in their
         config.mak and just overriding GETTEXT_POISON on the
         command-line for a one-off test).
    
      2. We don't actually bake GETTEXT_POISON in to the shell
         library like we do for the C code. It checks
         $GIT_GETTEXT_POISON at runtime, which is set up by the
         test suite. So it makes sense to put the fix in the
         runtime code, too, which would cover something like:
    
           GIT_GETTEXT_POISON=foo git foo
    
         It's not likely that people use the poison code outside
         of running the test suite, but it's easy enough to make
         this case work.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    37380315