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

[PATCH 26/63] gettext tests: add GETTEXT_POISON=YesPlease Makefile parameter

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Sep 4, 2010, 22:10 UTC
Message-ID
<1283638229-14199-6-git-send-email-avarab@gmail.com>
In-Reply-To
<1283638229-14199-1-git-send-email-avarab@gmail.com>

Add a new GETTEXT_POISON=YesPlease Makefile debug target. With this target every invocation of _(s) will return "# GETTEXT POISON #" instead of `s' or the msgstr that `s` would look up.

This target is intended to sanity check the gettextization series against the test suite.

If the test suite is relying on the US English output of Git the test should either have a NO_GETTEXT_POISON prerequisite, or the message in question shouldn't be translated because it's a plumbing message.

We won't catch everything with this since we don't have 100% test coverage, but the chances of us doing so are much larger.

The reason I'm using "# GETTEXT POISON #" is that a lot of tests that rely on the fake editor would break if it wasn't a comment, since the comment message that's inserted on e.g. `git commit --amend' is translatable.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 Makefile      |    9 +++++++++
 gettext.h     |    4 ++++
 t/test-lib.sh |    1 +
 3 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
index 4d2d4c7..f26fca3 100644
--- a/Makefile
+++ b/Makefile
@@ -43,6 +43,10 @@ all::
 # on platforms where we don't expect glibc (Linux, Hurd,
 # GNU/kFreeBSD), which includes libintl.
 #
+# Define GETTEXT_POISON to turn all strings that use gettext into
+# gibberish. This option should only be used by the Git developers to
+# check that the Git gettext implementation itself is sane.
+#
 # Define EXPATDIR=/foo/bar if your expat header and library files are in
 # /foo/bar/include and /foo/bar/lib directories.
 #
@@ -1507,6 +1511,10 @@ ifdef NEEDS_LIBINTL
 	EXTLIBS += -lintl
 endif
 
+ifdef GETTEXT_POISON
+	COMPAT_CFLAGS += -DGETTEXT_POISON
+endif
+
 ifeq ($(TCLTK_PATH),)
 NO_TCLTK=NoThanks
 endif
@@ -2065,6 +2073,7 @@ ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT
 	@echo GIT_TEST_CMP_USE_COPIED_CONTEXT=YesPlease >>$@
 endif
 	@echo NO_GETTEXT=\''$(subst ','\'',$(subst ','\'',$(NO_GETTEXT)))'\' >>$@
+	@echo GETTEXT_POISON=\''$(subst ','\'',$(subst ','\'',$(GETTEXT_POISON)))'\' >>$@
 
 ### Detect Tck/Tk interpreter path changes
 ifndef NO_TCLTK
diff --git a/gettext.h b/gettext.h
index e02939a..94ab0f3 100644
--- a/gettext.h
+++ b/gettext.h
@@ -11,8 +11,12 @@ extern void git_setup_gettext(void);
 #ifdef NO_GETTEXT
 #define _(s) (s)
 #else
+#ifndef GETTEXT_POISON
 #include <libintl.h>
 #define _(s) gettext(s)
+#else
+#define _(s) "# GETTEXT POISON #"
+#endif
 #endif
 
 #endif
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 3fcb272..b297ef6 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -963,6 +963,7 @@ esac
 test -z "$NO_PERL" && test_set_prereq PERL
 test -z "$NO_PYTHON" && test_set_prereq PYTHON
 test -z "$NO_GETTEXT" && test_set_prereq GETTEXT
+test -z "$GETTEXT_POISON" && test_set_prereq NO_GETTEXT_POISON
 
 # test whether the filesystem supports symbolic links
 ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS
-- 
1.7.2.3.313.gcd15
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 6 of 39 in “[REDO] Add gettext support to Git”
  1. 00/63 [REDO] Add gettext support to GitÆvar Arnfjörð Bjarmason, Sep 4, 2010
  2. 01/63 builtin: use builtin.h for all builtin commandsÆvar Arnfjörð Bjarmason, Sep 4, 2010
  3. 02/63 Add infrastructure for translating Git with gettextÆvar Arnfjörð Bjarmason, Sep 4, 2010
  4. 05/63 tests: locate i18n lib&data correctly under --valgrindÆvar Arnfjörð Bjarmason, Sep 4, 2010
  5. 21/63 po/is.po: add Icelandic translationÆvar Arnfjörð Bjarmason, Sep 4, 2010
  6. 26/63 gettext tests: add GETTEXT_POISON=YesPlease Makefile parameterÆvar Arnfjörð Bjarmason, Sep 4, 2010
  7. 27/63 gettext tests: skip lib-gettext.sh tests under GETTEXT_POISONÆvar Arnfjörð Bjarmason, Sep 4, 2010
  8. 28/63 gettext tests: skip breaking tests under GETTEXT_POISONÆvar Arnfjörð Bjarmason, Sep 4, 2010
  9. 51/63 gettextize: git-merge basic messagesÆvar Arnfjörð Bjarmason, Sep 4, 2010
  10. 63/63 po/en_GB.po: add British English TranslationÆvar Arnfjörð Bjarmason, Sep 4, 2010
  11. 00/15 [REDO CONTINUE] Add gettext support to GitÆvar Arnfjörð Bjarmason, Sep 6, 2010
  12. 01/15 gettextize: git-archive basic messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  13. 02/15 gettextize: git-bundle basic messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  14. 03/15 gettextize: git-clean basic messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  15. 04/15 gettextize: git-clean clean.requireForce messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  16. 05/15 gettextize: git-describe basic messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  17. 06/15 gettextize: git-gc basic messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  18. 07/15 gettextize: git-gc "Auto packing the repository" messageÆvar Arnfjörð Bjarmason, Sep 6, 2010
  19. 08/15 gettextize: git-notes basic commandsÆvar Arnfjörð Bjarmason, Sep 6, 2010
  20. 09/15 gettextize: git-notes GIT_NOTES_REWRITE_MODE error messageÆvar Arnfjörð Bjarmason, Sep 6, 2010
  21. 10/15 gettextize: git-notes "Refusing to %s notes in %s" messageÆvar Arnfjörð Bjarmason, Sep 6, 2010
  22. 11/15 gettextize: git-revert basic messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  23. 12/15 gettextize: git-revert mark the "me" variable for translationÆvar Arnfjörð Bjarmason, Sep 6, 2010
  24. Jonathan NiederSep 6, 2010
  25. Ævar Arnfjörð BjarmasonSep 6, 2010
  26. Jonathan NiederSep 6, 2010
  27. 13/15 gettextize: git-revert messages using the "me" variableÆvar Arnfjörð Bjarmason, Sep 6, 2010
  28. Jonathan NiederSep 6, 2010
  29. Ævar Arnfjörð BjarmasonSep 6, 2010
  30. Jonathan NiederSep 7, 2010
  31. Ævar Arnfjörð BjarmasonSep 7, 2010
  32. Junio C HamanoSep 10, 2010
  33. 14/15 gettextize: git-revert split up "could not revert/apply" messageÆvar Arnfjörð Bjarmason, Sep 6, 2010
  34. Jonathan NiederSep 6, 2010
  35. Ævar Arnfjörð BjarmasonSep 6, 2010
  36. Jonathan NiederSep 7, 2010
  37. Ævar Arnfjörð BjarmasonSep 7, 2010
  38. 15/15 gettextize: git-shortlog basic messagesÆvar Arnfjörð Bjarmason, Sep 6, 2010
  39. Jonathan NiederSep 6, 2010

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.