Blame gettext-tools/tests/format-perl-mixed-2

Packit 5b56b6
#! /bin/sh
Packit 5b56b6
. "${srcdir=.}/init.sh"; path_prepend_ . ../src
Packit 5b56b6
Packit 5b56b6
# Test checking of Perl format strings.
Packit 5b56b6
# This test is for the combination of printf and brace format strings.
Packit 5b56b6
Packit 5b56b6
cat <<\EOF > f-pm-2.data
Packit 5b56b6
# Valid: normal case.
Packit 5b56b6
#, perl-format, perl-brace-format
Packit 5b56b6
msgid  "{foo} %d {bar} %s"
Packit 5b56b6
msgstr "{bar} {foo} %d %s"
Packit 5b56b6
# Invalid: missing argument.
Packit 5b56b6
#, perl-format, perl-brace-format
Packit 5b56b6
msgid  "{foo} %d {bar} %s"
Packit 5b56b6
msgstr "{bar} %d %s"
Packit 5b56b6
# Valid: missing argument but checking disabled.
Packit 5b56b6
#, perl-format, no-perl-brace-format
Packit 5b56b6
msgid  "{foo} %d {bar} %s"
Packit 5b56b6
msgstr "{bar} %d %s"
Packit 5b56b6
# Invalid: printf format reordered without position specifiers %1$, %2$.
Packit 5b56b6
#, perl-format, perl-brace-format
Packit 5b56b6
msgid  "{foo} %d {bar} %s"
Packit 5b56b6
msgstr "{bar} %s {foo} %d"
Packit 5b56b6
# Valid: same thing but checking disabled.
Packit 5b56b6
#, no-perl-format, perl-brace-format
Packit 5b56b6
msgid  "{foo} %d {bar} %s"
Packit 5b56b6
msgstr "{bar} %s {foo} %d"
Packit 5b56b6
# Invalid: unnamed vs. named arguments
Packit 5b56b6
#, perl-format
Packit 5b56b6
msgid  "abc%sdef"
Packit 5b56b6
msgstr "xyz{value}"
Packit 5b56b6
# Invalid: named vs. unnamed arguments
Packit 5b56b6
#, perl-brace-format
Packit 5b56b6
msgid  "abc{value}def"
Packit 5b56b6
msgstr "xyz%s"
Packit 5b56b6
EOF
Packit 5b56b6
Packit 5b56b6
: ${MSGFMT=msgfmt}
Packit 5b56b6
n=0
Packit 5b56b6
while read comment; do
Packit 5b56b6
  read formats
Packit 5b56b6
  read msgid_line
Packit 5b56b6
  read msgstr_line
Packit 5b56b6
  n=`expr $n + 1`
Packit 5b56b6
  cat <<EOF > f-pm-2-$n.po
Packit 5b56b6
${formats}
Packit 5b56b6
${msgid_line}
Packit 5b56b6
${msgstr_line}
Packit 5b56b6
EOF
Packit 5b56b6
  fail=
Packit 5b56b6
  if echo "$comment" | grep 'Valid:' > /dev/null; then
Packit 5b56b6
    if ${MSGFMT} --check-format -o f-pm-2-$n.mo f-pm-2-$n.po; then
Packit 5b56b6
      :
Packit 5b56b6
    else
Packit 5b56b6
      fail=yes
Packit 5b56b6
    fi
Packit 5b56b6
  else
Packit 5b56b6
    ${MSGFMT} --check-format -o f-pm-2-$n.mo f-pm-2-$n.po 2> /dev/null
Packit 5b56b6
    if test $? = 1; then
Packit 5b56b6
      :
Packit 5b56b6
    else
Packit 5b56b6
      fail=yes
Packit 5b56b6
    fi
Packit 5b56b6
  fi
Packit 5b56b6
  if test -n "$fail"; then
Packit 5b56b6
    echo "Format string checking error:" 1>&2
Packit 5b56b6
    cat f-pm-2-$n.po 1>&2
Packit 5b56b6
    exit 1
Packit 5b56b6
  fi
Packit 5b56b6
done < f-pm-2.data
Packit 5b56b6
Packit 5b56b6
exit 0