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