#! /bin/sh . "${srcdir=.}/init.sh"; path_prepend_ . ../src # Test checking of Java format strings. cat <<\EOF > f-j-2.data # Invalid: invalid msgstr msgid "abc{0}def" msgstr "abc{" # Valid: same arguments msgid "abc{1}def" msgstr "xyz{1}" # Valid: same arguments, differently written msgid "abc{1}def" msgstr "xyz{01}" # Valid: permutation msgid "abc{2}{0}{1}def" msgstr "xyz{1}{0}{2}" # Invalid: too few arguments msgid "abc{1}def{0}" msgstr "xyz{0}" # Invalid: too many arguments msgid "abc{0}def" msgstr "xyz{0}uvw{1}" # Invalid: missing non-final argument msgid "abc{1}def{0}" msgstr "xyz{1}" # Invalid: added non-final argument msgid "abc{1}def" msgstr "xyz{0}{1}" # Invalid: different number of arguments msgid "abc{500000000}def" msgstr "xyz{500000001}" # Valid: type compatibility msgid "abc{1,number}" msgstr "xyz{1,choice,0#zero|1#{1,number}}" # Valid: type compatibility msgid "abc{1,number}" msgstr "xyz{1,number,currency}" # Valid: type compatibility msgid "abc{1,number}" msgstr "xyz{1,number,percent}" # Valid: type compatibility msgid "abc{1,number}" msgstr "xyz{1,number,integer}" # Valid: type compatibility msgid "abc{1,number}" msgstr "xyz{1,number,###,##0}" # Valid: type compatibility msgid "abc{1,date}" msgstr "xyz{1,time}" # Valid: type compatibility msgid "abc{1,date}" msgstr "xyz{1,date,short}" # Valid: type compatibility msgid "abc{1,date}" msgstr "xyz{1,date,medium}" # Valid: type compatibility msgid "abc{1,date}" msgstr "xyz{1,date,long}" # Valid: type compatibility msgid "abc{1,date}" msgstr "xyz{1,date,full}" # Valid: type compatibility msgid "abc{1,date}" msgstr "xyz{1,date,yyyy-MM-dd}" # Valid: type compatibility msgid "abc{1,time}" msgstr "xyz{1,time,short}" # Valid: type compatibility msgid "abc{1,time}" msgstr "xyz{1,time,medium}" # Valid: type compatibility msgid "abc{1,time}" msgstr "xyz{1,time,long}" # Valid: type compatibility msgid "abc{1,time}" msgstr "xyz{1,time,full}" # Valid: type compatibility msgid "abc{1,time}" msgstr "xyz{1,time,}" # Valid: type compatibility msgid "abc{1,time}" msgstr "xyz{1,time,hh:mm:ss}" # Invalid: type incompatibility msgid "abc{1}" msgstr "xyz{1,number}" # Invalid: type incompatibility msgid "abc{1}" msgstr "xyz{1,date}" # Invalid: type incompatibility msgid "abc{1,time}" msgstr "xyz{1,number}" # Invalid: type incompatibility msgid "abc{1,number}" msgstr "xyz{1,date}" # Invalid: type incompatibility msgid "abc{1}" msgstr "xyz{1,choice,0#zero|1#{1,number}}" # Invalid: type incompatibility msgid "abc{1}" msgstr "xyz{1,choice,0#zero|1#{0,number}}" # Invalid: type incompatibility msgid "abc{0,number}{1}" msgstr "xyz{0,choice,0#zero|1#{1,number}}" EOF : ${MSGFMT=msgfmt} n=0 while read comment; do read msgid_line read msgstr_line n=`expr $n + 1` cat < f-j-2-$n.po #, java-format ${msgid_line} ${msgstr_line} EOF fail= if echo "$comment" | grep 'Valid:' > /dev/null; then if ${MSGFMT} --check-format -o f-j-2-$n.mo f-j-2-$n.po; then : else fail=yes fi else ${MSGFMT} --check-format -o f-j-2-$n.mo f-j-2-$n.po 2> /dev/null if test $? = 1; then : else fail=yes fi fi if test -n "$fail"; then echo "Format string checking error:" 1>&2 cat f-j-2-$n.po 1>&2 Exit 1 fi rm -f f-j-2-$n.po f-j-2-$n.mo done < f-j-2.data Exit 0