blob: 0687b3fd8499ac46b1564c953997f9a597f4e0ba [file] [log] [blame] [edit]
#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src
# Test msgexec on a PO file with contexts.
# This test fails on mingw (in a Cygwin environment), due to the combination
# of two reasons:
# 1. The value of the environment variable MSGEXEC_MSGCTXT is stored
# in UTF-8 encoding (i.e. the PO file's encoding); it should be stored
# in the GetACP() encoding instead. This problem is inherent in msgexec,
# and msgexec warns about it - but in this test, we filter the warnings
# away.
# 2. The child process is Cygwin's sh.exe, and is affected by a Cygwin bug:
# the values returned by getenv() in the child process, when the parent
# process is a mingw program, are in the GetOEMCP() encoding (should be
# in the GetACP() encoding). This has been reported at
# <https://cygwin.com/ml/cygwin/2009-08/msg00430.html>.
cat <<\EOF > mex-test4.po
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. A menu item
msgctxt "File|"
msgid "Open"
msgstr "Ouvrir"
#. A menu item
msgctxt "File|"
msgid "New"
msgstr "Nouveau"
#. Denote a lock's state
msgctxt "Lock state"
msgid "Open"
msgstr "Ouvert"
#. Denote a lock's state
msgctxt "Lock state"
msgid "Closed"
msgstr "Fermé"
#. A product
msgctxt "Audi"
msgid "car"
msgstr "voiture"
#. A product
msgctxt "Océ"
msgid "copier"
msgstr "photocopieur"
#~ msgid "Save As"
#~ msgstr "Enregistrer l'as"
#. A menu item
#~ msgctxt "File|"
#~ msgid "Save As"
#~ msgstr "Enregistrer sous"
EOF
cat <<\EOF > mex-test4.sh
#! /bin/sh
echo "========================= $MSGEXEC_LOCATION =========================" | LC_ALL=C tr -d '\r'
if test -n "${MSGEXEC_MSGCTXT+set}"; then
echo "context: $MSGEXEC_MSGCTXT" | LC_ALL=C tr -d '\r'
fi
cat <<MEOF
$MSGEXEC_MSGID
---
MEOF
cat
echo | LC_ALL=C tr -d '\r'
exit 0
EOF
chmod a+x mex-test4.sh
: ${MSGEXEC=msgexec}
LC_ALL=C \
${MSGEXEC} -i mex-test4.po ./mex-test4.sh > mex-test4.out 2> mex-test4.err
result=$?
cat mex-test4.err | grep -v 'warning: Locale charset' | grep -v '^ '
test $result = 0 || { Exit 1; }
cat <<\EOF > mex-test4.ok
========================= mex-test4.po:2 =========================
---
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
========================= mex-test4.po:9 =========================
context: File|
Open
---
Ouvrir
========================= mex-test4.po:14 =========================
context: File|
New
---
Nouveau
========================= mex-test4.po:19 =========================
context: Lock state
Open
---
Ouvert
========================= mex-test4.po:24 =========================
context: Lock state
Closed
---
Fermé
========================= mex-test4.po:29 =========================
context: Audi
car
---
voiture
========================= mex-test4.po:34 =========================
context: Océ
copier
---
photocopieur
========================= mex-test4.po:37 =========================
Save As
---
Enregistrer l'as
========================= mex-test4.po:42 =========================
context: File|
Save As
---
Enregistrer sous
EOF
: ${DIFF=diff}
${DIFF} mex-test4.ok mex-test4.out
result=$?
exit $result