xref: /netbsd-src/external/gpl2/gettext/dist/gettext-tools/tests/format-csharp-2 (revision 946379e7b37692fc43f68eb0d1c10daa0a7f3b6c)
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