From dbcb1cd416b419cb36358c70d4c067ce7ac1dde4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=86var=20Arnfj=C3=B6r=C3=B0=20Bjarmason?= Date: Fri, 3 Sep 2010 17:50:56 +0000 Subject: [PATCH] gettext tests: add GETTEXT_POISON=YesPlease Makefile parameter MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- Makefile | 9 +++++++++ gettext.h | 4 ++++ t/test-lib.sh | 1 + 3 files changed, 14 insertions(+) diff --git a/Makefile b/Makefile index 2d6d8242d..3774d4a8f 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,10 @@ all:: # FreeBSD can use either, but MinGW and some others need to use # libcharset.h's locale_charset() instead. # +# 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. # @@ -1528,6 +1532,10 @@ ifdef NEEDS_LIBINTL EXTLIBS += -lintl endif +ifdef GETTEXT_POISON + COMPAT_CFLAGS += -DGETTEXT_POISON +endif + ifeq ($(TCLTK_PATH),) NO_TCLTK=NoThanks endif @@ -2098,6 +2106,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 e02939ae3..94ab0f3b2 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 #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 0379f2a40..29bdf882a 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -984,6 +984,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 -- 2.30.2