1*946379e7Schristos#! /bin/sh 2*946379e7Schristos 3*946379e7Schristos# Test checking of Java format strings. 4*946379e7Schristos 5*946379e7Schristostmpfiles="" 6*946379e7Schristostrap 'rm -fr $tmpfiles' 1 2 3 15 7*946379e7Schristos 8*946379e7Schristostmpfiles="$tmpfiles f-cs-2.data" 9*946379e7Schristoscat <<\EOF > f-cs-2.data 10*946379e7Schristos# Invalid: invalid msgstr 11*946379e7Schristosmsgid "abc{0}def" 12*946379e7Schristosmsgstr "abc{" 13*946379e7Schristos# Valid: same arguments 14*946379e7Schristosmsgid "abc{1}def" 15*946379e7Schristosmsgstr "xyz{1}" 16*946379e7Schristos# Valid: same arguments, differently written 17*946379e7Schristosmsgid "abc{1}def" 18*946379e7Schristosmsgstr "xyz{01}" 19*946379e7Schristos# Valid: permutation 20*946379e7Schristosmsgid "abc{2}{0}{1}def" 21*946379e7Schristosmsgstr "xyz{1}{0}{2}" 22*946379e7Schristos# Invalid: too few arguments 23*946379e7Schristosmsgid "abc{1}def{0}" 24*946379e7Schristosmsgstr "xyz{0}" 25*946379e7Schristos# Invalid: too many arguments 26*946379e7Schristosmsgid "abc{0}def" 27*946379e7Schristosmsgstr "xyz{0}uvw{1}" 28*946379e7Schristos# Valid: missing non-final argument 29*946379e7Schristosmsgid "abc{1}def{0}" 30*946379e7Schristosmsgstr "xyz{1}" 31*946379e7Schristos# Valid: added non-final argument 32*946379e7Schristosmsgid "abc{1}def" 33*946379e7Schristosmsgstr "xyz{0}{1}" 34*946379e7Schristos# Invalid: different number of arguments 35*946379e7Schristosmsgid "abc{500000000}def" 36*946379e7Schristosmsgstr "xyz{500000001}" 37*946379e7Schristos# Valid: type compatibility 38*946379e7Schristosmsgid "abc{1:X}" 39*946379e7Schristosmsgstr "xyz{1:g}" 40*946379e7SchristosEOF 41*946379e7Schristos 42*946379e7Schristos: ${MSGFMT=msgfmt} 43*946379e7Schristosn=0 44*946379e7Schristoswhile read comment; do 45*946379e7Schristos read msgid_line 46*946379e7Schristos read msgstr_line 47*946379e7Schristos n=`expr $n + 1` 48*946379e7Schristos tmpfiles="$tmpfiles f-cs-2-$n.po f-cs-2-$n.mo" 49*946379e7Schristos cat <<EOF > f-cs-2-$n.po 50*946379e7Schristos#, csharp-format 51*946379e7Schristos${msgid_line} 52*946379e7Schristos${msgstr_line} 53*946379e7SchristosEOF 54*946379e7Schristos fail= 55*946379e7Schristos if echo "$comment" | grep 'Valid:' > /dev/null; then 56*946379e7Schristos if ${MSGFMT} --check-format -o f-cs-2-$n.mo f-cs-2-$n.po; then 57*946379e7Schristos : 58*946379e7Schristos else 59*946379e7Schristos fail=yes 60*946379e7Schristos fi 61*946379e7Schristos else 62*946379e7Schristos ${MSGFMT} --check-format -o f-cs-2-$n.mo f-cs-2-$n.po 2> /dev/null 63*946379e7Schristos if test $? = 1; then 64*946379e7Schristos : 65*946379e7Schristos else 66*946379e7Schristos fail=yes 67*946379e7Schristos fi 68*946379e7Schristos fi 69*946379e7Schristos if test -n "$fail"; then 70*946379e7Schristos echo "Format string checking error:" 1>&2 71*946379e7Schristos cat f-cs-2-$n.po 1>&2 72*946379e7Schristos exit 1 73*946379e7Schristos fi 74*946379e7Schristos rm -f f-cs-2-$n.po f-cs-2-$n.mo 75*946379e7Schristosdone < f-cs-2.data 76*946379e7Schristos 77*946379e7Schristosrm -fr $tmpfiles 78*946379e7Schristos 79*946379e7Schristosexit 0 80