Home | History | Annotate | Line # | Download | only in tests
      1 #! /bin/sh
      2 
      3 # Test recognition of Perl brace format strings.
      4 
      5 tmpfiles=""
      6 trap 'rm -fr $tmpfiles' 1 2 3 15
      7 
      8 tmpfiles="$tmpfiles f-pb-1.data"
      9 cat <<\EOF > f-pb-1.data
     10 # Invalid: no argument
     11 "abc"
     12 # Valid: a named argument
     13 "abc{value}"
     14 # Invalid: an empty name
     15 "abc{}"
     16 # Invalid: unterminated name
     17 "abc{value"
     18 # Valid: three arguments, two with equal names
     19 "abc{addr},{char},{addr}"
     20 # Invalid: place-holder contains a space.
     21 "{foo bar}"
     22 # Invalid: missing right angle bracket.
     23 "{foo bar"
     24 # Valid: not nested, but one single place-holder.
     25 "{foo{bar}baz}"
     26 # Valid: no nesting error, but one single place-holder.
     27 "{foo{bar}baz"
     28 # Valid: place-holder with spaces must be ignored, but still one remaining.
     29 "{foo bar} {baz}"
     30 # Invalid: percent sign not allowed.
     31 "{foo%bar}"
     32 EOF
     33 
     34 : ${XGETTEXT=xgettext}
     35 n=0
     36 while read comment; do
     37   read string
     38   n=`expr $n + 1`
     39   tmpfiles="$tmpfiles f-pb-1-$n.in f-pb-1-$n.po"
     40   cat <<EOF > f-pb-1-$n.in
     41 gettext(${string});
     42 EOF
     43   ${XGETTEXT} -L Perl -o f-pb-1-$n.po f-pb-1-$n.in || exit 1
     44   test -f f-pb-1-$n.po || exit 1
     45   fail=
     46   if echo "$comment" | grep 'Valid:' > /dev/null; then
     47     if grep perl-brace-format f-pb-1-$n.po > /dev/null; then
     48       :
     49     else
     50       fail=yes
     51     fi
     52   else
     53     if grep perl-brace-format f-pb-1-$n.po > /dev/null; then
     54       fail=yes
     55     else
     56       :
     57     fi
     58   fi
     59   if test -n "$fail"; then
     60     echo "Format string recognition error:" 1>&2
     61     cat f-pb-1-$n.in 1>&2
     62     echo "Got:" 1>&2
     63     cat f-pb-1-$n.po 1>&2
     64     exit 1
     65   fi
     66   rm -f f-pb-1-$n.in f-pb-1-$n.po
     67 done < f-pb-1.data
     68 
     69 rm -fr $tmpfiles
     70 
     71 exit 0
     72