1#!/bin/sh 2# 3# Copyright (c) 2010 Ævar Arnfjörð Bjarmason 4# 5 6test_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 11RUNES="TILRAUN: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ" 12PUNTS="TILRAUN: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ?? ????" 13MSGKEY="TEST: Old English Runes" 14 15test_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 21test_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 27test_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 33test_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 52test_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. 67test_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 73test_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 80test_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 87test_done 88