#! /bin/sh

# Test msgfilter on a PO file with contexts.

tmpfiles=""
trap 'rm -fr $tmpfiles' 1 2 3 15

if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
    ac_n= ac_c='
' ac_t='        '
  else
    ac_n=-n ac_c= ac_t=
  fi
else
  ac_n= ac_c='\c' ac_t=
fi

# Some sed programs (Solaris etc.) omit the last line if it ended without
# a newline. We must skip this test when we encounter such a broken sed.
sedoutput=`echo $ac_n "abc$ac_c" | sed -e s/x/x/`
test -n "$sedoutput" || {
  echo "Skipping test: sed program is broken"
  rm -fr $tmpfiles; exit 77
}

# Some sed programs (IRIX, OSF/1 etc.) add a newline to the last line if it
# doesn't end with a newline.
sedoutputcount=`echo $ac_n "abc$ac_c" | sed -e s/x/x/ | wc -c`
sedoutputcount=`echo "$sedoutputcount" | sed -e 's/[ 	]//g'`
test "$sedoutputcount" = 3 || {
  echo "Skipping test: sed program inserts extra newline"
  rm -fr $tmpfiles; exit 77
}

tmpfiles="$tmpfiles mfi-test4.po"
cat <<\EOF > mfi-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

tmpfiles="$tmpfiles mfi-test4.out mfi-test4.err"
: ${MSGFILTER=msgfilter}
sedexpr1='1{
s/^/\[\[/
}'
sedexpr2='${
s/$/\]\]/
}'
LC_ALL=C \
${MSGFILTER} -i mfi-test4.po -o mfi-test4.out sed -e "$sedexpr1" -e "$sedexpr2" >mfi-test4.err 2>&1
result=$?
cat mfi-test4.err | grep -v 'warning: Locale charset' | grep -v '^ '
test $result = 0 || { rm -fr $tmpfiles; exit 1; }

tmpfiles="$tmpfiles mfi-test4.ok"
cat <<\EOF > mfi-test4.ok
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

: ${DIFF=diff}
${DIFF} mfi-test4.ok mfi-test4.out
result=$?

rm -fr $tmpfiles

exit $result
