• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#! /bin/sh
2. "${srcdir=.}/init.sh"; path_prepend_ . ../src
3
4# Test recognition of GFC internal format strings.
5
6cat <<\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"
67EOF
68
69: ${XGETTEXT=xgettext}
70n=0
71while read comment; do
72  read string
73  n=`expr $n + 1`
74  cat <<EOF > f-gf-1-$n.in
75gettext(${string});
76EOF
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
101done < f-gf-1.data
102
103Exit 0
104