Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gettext-tools / tests / format-gfc-internal-1
1 #! /bin/sh
2 . "${srcdir=.}/init.sh"; path_prepend_ . ../src
3
4 # Test recognition of GFC internal format strings.
5
6 cat <<\EOF > f-gf-1.data
7 # Valid: no argument
8 "abc%%"
9 # Valid: void argument
10 "abc%C"
11 # Valid: one locus argument
12 "abc%L"
13 # Valid: one character argument
14 "abc%c"
15 # Valid: one string argument
16 "abc%s"
17 # Valid: one integer argument
18 "abc%i"
19 # Valid: one integer argument
20 "abc%d"
21 # Valid: one integer argument
22 "abc%u"
23 # Valid: one argument with size specifier
24 "abc%li"
25 # Valid: one argument with size specifier
26 "abc%ld"
27 # Valid: one argument with size specifier
28 "abc%lu"
29 # Invalid: one argument with invalid size specifier
30 "abc%lli"
31 # Invalid: one argument with invalid size specifier
32 "abc%llu"
33 # Invalid: one argument with invalid size specifier
34 "abc%ls"
35 # Invalid: unterminated
36 "abc%"
37 # Invalid: unknown format specifier
38 "abc%y"
39 # Invalid: precision
40 "abc%.*s"
41 # Valid: three arguments
42 "abc%d%u%u"
43 # Valid: a numbered argument
44 "abc%1$d"
45 # Invalid: zero
46 "abc%0$d"
47 # Invalid: unterminated number
48 "abc%1"
49 # Valid: three arguments, two with same number
50 "abc%1$i,%2$c,%1$d"
51 # Invalid: argument with conflicting types
52 "abc%1$i,%2$c,%1$u"
53 # Valid: multiple uses of void argument
54 "abc%Cdef%dghi%C"
55 # Invalid: argument with conflicting types
56 "abc%1$i,%2$c,%1$C"
57 # Valid: mixing of numbered and unnumbered arguments
58 "abc%d%2$u"
59 # Invalid: missing non-final argument
60 "abc%2$u%3$s"
61 # Valid: non-final argument is void
62 "abc%C%2$u%3$s"
63 # Valid: permutation
64 "abc%2$ddef%1$d"
65 # Valid: multiple uses of same argument
66 "abc%2$udef%1$sghi%2$u"
67 EOF
68
69 : ${XGETTEXT=xgettext}
70 n=0
71 while read comment; do
72   read string
73   n=`expr $n + 1`
74   cat <<EOF > f-gf-1-$n.in
75 gettext(${string});
76 EOF
77   ${XGETTEXT} -L GCC-source -o f-gf-1-$n.po f-gf-1-$n.in || exit 1
78   test -f f-gf-1-$n.po || exit 1
79   fail=
80   if echo "$comment" | grep 'Valid:' > /dev/null; then
81     if grep gfc-internal-format f-gf-1-$n.po > /dev/null; then
82       :
83     else
84       fail=yes
85     fi
86   else
87     if grep gfc-internal-format f-gf-1-$n.po > /dev/null; then
88       fail=yes
89     else
90       :
91     fi
92   fi
93   if test -n "$fail"; then
94     echo "Format string recognition error:" 1>&2
95     cat f-gf-1-$n.in 1>&2
96     echo "Got:" 1>&2
97     cat f-gf-1-$n.po 1>&2
98     exit 1
99   fi
100   rm -f f-gf-1-$n.in f-gf-1-$n.po
101 done < f-gf-1.data
102
103 exit 0