#! /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 # . 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 < 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