Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gettext-tools / tests / format-perl-1
1 #! /bin/sh
2 . "${srcdir=.}/init.sh"; path_prepend_ . ../src
3
4 # Test recognition of Perl format strings.
5
6 cat <<\EOF > f-pl-1.data
7 # Valid: no argument
8 "abc%%"
9 # Valid: one small integer argument
10 "abc%c"
11 # Valid: one string argument
12 "abc%s"
13 # Valid: one scalar vector argument
14 "abc%_"
15 # Valid: one pointer argument
16 "abc%p"
17 # Valid: one integer argument
18 "abc%i"
19 # Valid: one integer argument
20 "abc%d"
21 # Valid: one integer argument
22 "abc%D"
23 # Valid: one integer argument
24 "abc%u"
25 # Valid: one integer argument
26 "abc%U"
27 # Valid: one integer argument
28 "abc%b"
29 # Valid: one integer argument
30 "abc%o"
31 # Valid: one integer argument
32 "abc%O"
33 # Valid: one integer argument
34 "abc%x"
35 # Valid: one integer argument
36 "abc%X"
37 # Valid: one floating-point argument
38 "abc%e"
39 # Valid: one floating-point argument
40 "abc%E"
41 # Valid: one floating-point argument
42 "abc%f"
43 # Valid: one floating-point argument
44 "abc%F"
45 # Valid: one floating-point argument
46 "abc%g"
47 # Valid: one floating-point argument
48 "abc%G"
49 # Valid: one argument with flags
50 "abc%0#g"
51 # Valid: one argument with width
52 "abc%2g"
53 # Valid: one argument with width
54 "abc%*g"
55 # Valid: one argument with precision
56 "abc%.4g"
57 # Valid: one argument with precision
58 "abc%.*g"
59 # Valid: one argument with width and precision
60 "abc%14.4g"
61 # Valid: one argument with width and precision
62 "abc%14.*g"
63 # Valid: one argument with width and precision
64 "abc%*.4g"
65 # Valid: one argument with width and precision
66 "abc%*.*g"
67 # Valid: one argument with size specifier
68 "abc%hi"
69 # Valid: one argument with size specifier
70 "abc%li"
71 # Valid: one argument with size specifier
72 "abc%lli"
73 # Valid: one argument with size specifier
74 "abc%Lg"
75 # Valid: one argument with size specifier
76 "abc%qi"
77 # Valid: one argument with size specifier
78 "abc%Vi"
79 # Valid: one argument with size specifier
80 "abc%I32i"
81 # Valid: one argument with size specifier
82 "abc%I64i"
83 # Valid: one argument with size specifier
84 "abc%Ii"
85 # Invalid: unterminated
86 "abc%"
87 # Invalid: unknown format specifier
88 "abc%y"
89 # Invalid: flags after width
90 "abc%*0g"
91 # Invalid: twice precision
92 "abc%.4.2g"
93 # Valid: three arguments
94 "abc%d%u%u"
95 # Valid: a numbered argument
96 "abc%1$d"
97 # Invalid: zero
98 "abc%0$d"
99 # Valid: two-digit numbered arguments
100 "abc%11$def%10$dgh%9$dij%8$dkl%7$dmn%6$dop%5$dqr%4$dst%3$duv%2$dwx%1$dyz"
101 # Invalid: unterminated number
102 "abc%1"
103 # Invalid: flags before number
104 "abc%+1$d"
105 # Valid: three arguments, two with same number
106 "abc%1$4x,%2$c,%1$u"
107 # Invalid: argument with conflicting types
108 "abc%1$4x,%2$c,%1$s"
109 # Valid: no conflict
110 "abc%1$4x,%2$c,%1$u"
111 # Valid: mixing of numbered and unnumbered arguments
112 "abc%d%2$x"
113 # Valid: numbered argument with constant precision
114 "abc%1$.9x"
115 # Valid: mixing of numbered and unnumbered arguments
116 "abc%2$.*x"
117 # Valid: missing non-final argument
118 "abc%2$x%3$s"
119 # Valid: permutation
120 "abc%2$ddef%1$d"
121 # Valid: multiple uses of same argument
122 "abc%2$xdef%1$pghi%2$x"
123 # Valid: one argument with width
124 "abc%2$#*1$g"
125 # Valid: one argument with width and precision
126 "abc%3$*2$.*1$g"
127 # Invalid: zero
128 "abc%2$*0$.*1$g"
129 EOF
130
131 : ${XGETTEXT=xgettext}
132 n=0
133 while read comment; do
134   read string
135   n=`expr $n + 1`
136   sed -e 's,\$,\\$,g' <<EOF > f-pl-1-$n.in
137 gettext(${string});
138 EOF
139   ${XGETTEXT} -L Perl -o f-pl-1-$n.po f-pl-1-$n.in || exit 1
140   test -f f-pl-1-$n.po || exit 1
141   fail=
142   if echo "$comment" | grep 'Valid:' > /dev/null; then
143     if grep perl-format f-pl-1-$n.po > /dev/null; then
144       :
145     else
146       fail=yes
147     fi
148   else
149     if grep perl-format f-pl-1-$n.po > /dev/null; then
150       fail=yes
151     else
152       :
153     fi
154   fi
155   if test -n "$fail"; then
156     echo "Format string recognition error:" 1>&2
157     cat f-pl-1-$n.in 1>&2
158     echo "Got:" 1>&2
159     cat f-pl-1-$n.po 1>&2
160     exit 1
161   fi
162   rm -f f-pl-1-$n.in f-pl-1-$n.po
163 done < f-pl-1.data
164
165 exit 0