Merge branch 'sg/commit-cleanup-scissors' into maint
[git] / t / t0204-gettext-reencode-sanity.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2010 Ævar Arnfjörð Bjarmason
4 #
5
6 test_description="Gettext reencoding of our *.po/*.mo files works"
7
8 . ./lib-gettext.sh
9
10 # The constants used in a tricky observation for undefined behaviour
11 RUNES="TILRAUN: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ"
12 PUNTS="TILRAUN: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ?? ????"
13 MSGKEY="TEST: Old English Runes"
14
15 test_expect_success GETTEXT_LOCALE 'gettext: Emitting UTF-8 from our UTF-8 *.mo files / Icelandic' '
16     printf "TILRAUN: Halló Heimur!" >expect &&
17     LANGUAGE=is LC_ALL="$is_IS_locale" gettext "TEST: Hello World!" >actual &&
18     test_cmp expect actual
19 '
20
21 test_expect_success GETTEXT_LOCALE 'gettext: Emitting UTF-8 from our UTF-8 *.mo files / Runes' '
22     printf "%s" "$RUNES" >expect &&
23     LANGUAGE=is LC_ALL="$is_IS_locale" gettext "$MSGKEY" >actual &&
24     test_cmp expect actual
25 '
26
27 test_expect_success GETTEXT_ISO_LOCALE 'gettext: Emitting ISO-8859-1 from our UTF-8 *.mo files / Icelandic' '
28     printf "TILRAUN: Halló Heimur!" | iconv -f UTF-8 -t ISO8859-1 >expect &&
29     LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "TEST: Hello World!" >actual &&
30     test_cmp expect actual
31 '
32
33 test_expect_success GETTEXT_ISO_LOCALE 'gettext: impossible ISO-8859-1 output' '
34         LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "$MSGKEY" >runes &&
35         case "$(cat runes)" in
36         "$MSGKEY")
37                 say "Your system gives back the key to message catalog"
38                 ;;
39         "$PUNTS")
40                 say "Your system replaces an impossible character with ?"
41                 ;;
42         "$RUNES")
43                 say "Your system gives back the raw message for an impossible request"
44                 ;;
45         *)
46                 say "We never saw the error behaviour your system exhibits"
47                 false
48                 ;;
49         esac
50 '
51
52 test_expect_success GETTEXT_LOCALE 'gettext: Fetching a UTF-8 msgid -> UTF-8' '
53     printf "TILRAUN: ‚einfaldar‘ og „tvöfaldar“ gæsalappir" >expect &&
54     LANGUAGE=is LC_ALL="$is_IS_locale" gettext "TEST: ‘single’ and “double” quotes" >actual &&
55     test_cmp expect actual
56 '
57
58 # How these quotes get transliterated depends on the gettext implementation:
59 #
60 #   Debian:  ,einfaldar' og ,,tvöfaldar" [GNU libintl]
61 #   FreeBSD: `einfaldar` og "tvöfaldar"  [GNU libintl]
62 #   Solaris: ?einfaldar? og ?tvöfaldar?  [Solaris libintl]
63 #
64 # Just make sure the contents are transliterated, and don't use grep -q
65 # so that these differences are emitted under --verbose for curious
66 # eyes.
67 test_expect_success GETTEXT_ISO_LOCALE 'gettext: Fetching a UTF-8 msgid -> ISO-8859-1' '
68     LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "TEST: ‘single’ and “double” quotes" >actual &&
69     grep "einfaldar" actual &&
70     grep "$(echo tvöfaldar | iconv -f UTF-8 -t ISO8859-1)" actual
71 '
72
73 test_expect_success GETTEXT_LOCALE 'gettext.c: git init UTF-8 -> UTF-8' '
74     printf "Bjó til tóma Git lind" >expect &&
75     LANGUAGE=is LC_ALL="$is_IS_locale" git init repo >actual &&
76     test_when_finished "rm -rf repo" &&
77     grep "^$(cat expect) " actual
78 '
79
80 test_expect_success GETTEXT_ISO_LOCALE 'gettext.c: git init UTF-8 -> ISO-8859-1' '
81     printf "Bjó til tóma Git lind" >expect &&
82     LANGUAGE=is LC_ALL="$is_IS_iso_locale" git init repo >actual &&
83     test_when_finished "rm -rf repo" &&
84     grep "^$(cat expect | iconv -f UTF-8 -t ISO8859-1) " actual
85 '
86
87 test_done