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

Re: Re*: [PATCH/RFC] Change t0204-gettext-reencode-sanity.sh to pass under Mac OSX

From
Torsten Bögershausen <tboegi@web.de>
Date
Mar 11, 2012, 15:11 UTC
Message-ID
<4F5CC08C.90703@web.de>
In-Reply-To
<4F5BD585.5050007@web.de>
On 03/10/2012 11:28 PM, Torsten Bögershausen wrote:
Show 133 quoted lines
> On 03/09/2012 11:30 PM, Junio C Hamano wrote:
>> Junio C Hamano<gitster@pobox.com> writes:
>>
>>> I would be OK if the patch read like the attached, but I do not
>>> think treating the "show key" and "stuff with ?" case differently
>>> like the original code did makes any sense.
>> Ok, here is a re-roll with proper-ish log message. I've tested this
>> only in one of my VMs with is_IS locale (which happened to be Fedora
>> 15).
>>
>> -- >8 --
>> Subject: [PATCH] t0204: clarify the "observe undefined behaviour" test
>>
>> This test asks for an impossible conversion to the system by
>> preparing an UTF-8 translation with characters that cannot be
>> expressed in ISO-8859-1, and then asking the message shown in
>> ISO-8859-1. Even though the behaviour against such a request is
>> undefined, it may be interesting to see what the system does, and
>> the purpose of this test is to see if there are platforms that
>> exhibit behaviour that we haven't seen.
>>
>> The original recognized two known modes of behaviour:
>>
>> - the key used to query the message catalog ("TEST: Old English
>> Runes"), saying "I cannot do that i18n".
>> - impossible characters replaced with ASCII "?", saying "I punt".
>>
>> but they were treated totally differently. The test simply issued
>> an informational message "Your system punts on this one" for the
>> first error mode, while it diagnosed the latter as "Your system is
>> good; you pass!".
>>
>> It turns out that Mac OS X exhibits a third mode of error behaviour,
>> to spew out the raw value stored in the message catalog. The test
>> diagnosed this behaviour as "broken", but it is merely trying to do
>> its best to respond to an impossible request by saying "I punt" in a
>> way that is slightly different from the second one.
>>
>> Update the offending test to make it clear what is (and is not)
>> being tested, update the code structure so that newly discovered
>> error mode can easily be added to it later, and reword the message
>> that comes from a failing case to clarify that it is not the system
>> that is broken when it fails, but merely that the behaviour is not
>> something we have seen.
>>
>> Signed-off-by: Junio C Hamano<gitster@pobox.com>
>> ---
>> t/t0204-gettext-reencode-sanity.sh | 37
>> ++++++++++++++++++++++--------------
>> 1 file changed, 23 insertions(+), 14 deletions(-)
>>
>> diff --git a/t/t0204-gettext-reencode-sanity.sh
>> b/t/t0204-gettext-reencode-sanity.sh
>> index 189af90..8437e51 100755
>> --- a/t/t0204-gettext-reencode-sanity.sh
>> +++ b/t/t0204-gettext-reencode-sanity.sh
>> @@ -7,6 +7,10 @@ test_description="Gettext reencoding of our *.po/*.mo
>> files works"
>>
>> . ./lib-gettext.sh
>>
>> +# The constants used in a tricky observation for undefined behaviour
>> +RUNES="TILRAUN: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ
>> ᚹᛖᛥᚫ"
>> +PUNTS="TILRAUN: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ??
>> ????"
>> +MSGKEY="TEST: Old English Runes"
>>
>> test_expect_success GETTEXT_LOCALE 'gettext: Emitting UTF-8 from our
>> UTF-8 *.mo files / Icelandic' '
>> printf "TILRAUN: Halló Heimur!">expect&&
>> @@ -15,8 +19,8 @@ test_expect_success GETTEXT_LOCALE 'gettext:
>> Emitting UTF-8 from our UTF-8 *.mo
>> '
>>
>> test_expect_success GETTEXT_LOCALE 'gettext: Emitting UTF-8 from our
>> UTF-8 *.mo files / Runes' '
>> - printf "TILRAUN: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ
>> ᚹᛖᛥᚫ">expect&&
>> - LANGUAGE=is LC_ALL="$is_IS_locale" gettext "TEST: Old English
>> Runes">actual&&
>> + printf "%s" "$RUNES">expect&&
>> + LANGUAGE=is LC_ALL="$is_IS_locale" gettext "$MSGKEY">actual&&
>> test_cmp expect actual
>> '
>>
>> @@ -26,18 +30,23 @@ test_expect_success GETTEXT_ISO_LOCALE 'gettext:
>> Emitting ISO-8859-1 from our UT
>> test_cmp expect actual
>> '
>>
>> -test_expect_success GETTEXT_ISO_LOCALE 'gettext: Emitting ISO-8859-1
>> from our UTF-8 *.mo files / Runes' '
>> - LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "TEST: Old English
>> Runes">runes&&
>> -
>> - if grep "^TEST: Old English Runes$" runes
>> - then
>> - say "Your system can not handle this complexity and returns the
>> string as-is"
>> - else
>> - # Both Solaris and GNU libintl will return this stream of
>> - # question marks, so it is s probably portable enough
>> - printf "TILRAUN: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ??
>> ????">runes-expect&&
>> - test_cmp runes-expect runes
>> - fi
>> +test_expect_success GETTEXT_ISO_LOCALE 'gettext: impossible
>> ISO-8859-1 output' '
>> + LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "$MSGKEY">runes&&
>> + case "$(cat runes)" in
>> + "$MSGKEY")
>> + say "Your system gives back the key to message catalog"
>> + ;;
>> + "$PUNTS")
>> + say "Your system replaces an impossible character with ?"
>> + ;;
>> + "$RUNES")
>> + say "Your system gives back the raw message for an impossible request"
>> + ;;
>> + *)
>> + say "We never saw the error behaviour your system exhibits"
>> + false
>> + ;;
>> + esac
>> '
>>
>> test_expect_success GETTEXT_LOCALE 'gettext: Fetching a UTF-8 msgid ->
>> UTF-8' '
> Hi Junio and all,
> Thanks, the suggestion looks good to me.
>
> I want be able to test it, but there is one problem:
Here the results of my investigations:
a) git-sh-i18n is used by the test suite, not git-sh-i18n.sh
    git-sh-i18n is generated from git-sh-i18n.sh when running make
b) When running
    make clean && make USE_GETTEXT_SCHEME=gnu && (cd t && make)
   the log of t0204 looks like this:

# lib-gettext: Found 'is_IS.UTF-8' as an is_IS UTF-8 locale # lib-gettext: Found 'is_IS.ISO8859-1' as an is_IS ISO-8859-1 locale ok 1 - gettext: Emitting UTF-8 from our UTF-8 *.mo files / Icelandic ok 2 - gettext: Emitting UTF-8 from our UTF-8 *.mo files / Runes ok 3 - gettext: Emitting ISO-8859-1 from our UTF-8 *.mo files / Icelandic ok 4 - gettext: impossible ISO-8859-1 output ok 5 - gettext: Fetching a UTF-8 msgid -> UTF-8 ok 6 - gettext: Fetching a UTF-8 msgid -> ISO-8859-1 ok 7 - gettext.c: git init UTF-8 -> UTF-8 ok 8 - gettext.c: git init UTF-8 -> ISO-8859-1 # passed all 8 test(s) 1..8 =========== When running ./t0204-gettext-reencode-sanity.sh --verbose we find the line "Your system gives back the raw message for an impossible request" in the log.

Summary: test OK,

May I say "Thanks for looking into it, please go ahead with your suggested re-roll" ?

/Torsten
Previous: Junio C HamanoNext: Junio C Hamano
Message 17 of 25 in “Change t0204-gettext-reencode-sanity.sh to pass under Mac OSX”
  1. Change t0204-gettext-reencode-sanity.sh to pass under Mac OSXTorsten Bögershausen, Mar 5, 2012
  2. Junio C HamanoMar 5, 2012
  3. Ævar Arnfjörð BjarmasonMar 7, 2012
  4. Junio C HamanoMar 7, 2012
  5. Ævar Arnfjörð BjarmasonMar 7, 2012
  6. Junio C HamanoMar 7, 2012
  7. Ævar Arnfjörð BjarmasonMar 7, 2012
  8. Junio C HamanoMar 7, 2012
  9. Junio C HamanoMar 7, 2012
  10. Torsten BögershausenMar 8, 2012
  11. Johannes SixtMar 8, 2012
  12. Torsten BögershausenMar 8, 2012
  13. Torsten BögershausenMar 8, 2012
  14. Re*: [PATCH/RFC] Change t0204-gettext-reencode-sanity.sh to pass under Mac OSXJunio C Hamano, Mar 9, 2012
  15. Torsten BögershausenMar 10, 2012
  16. Junio C HamanoMar 11, 2012
  17. Torsten BögershausenMar 11, 2012
  18. Junio C HamanoMar 11, 2012
  19. Torsten BögershausenMar 11, 2012
  20. Junio C HamanoMar 11, 2012
  21. Torsten BögershausenMar 12, 2012
  22. Junio C HamanoMar 12, 2012
  23. Torsten BögershausenMar 13, 2012
  24. Junio C HamanoMar 13, 2012
  25. Junio C HamanoMar 12, 2012

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.