1#! /bin/sh 2 3# Test recognition of Java format strings. 4 5tmpfiles="" 6trap 'rm -fr $tmpfiles' 1 2 3 15 7 8tmpfiles="$tmpfiles f-j-1.data" 9cat <<\EOF > f-j-1.data 10# Valid: one argument 11"abc{0}def" 12# Valid: ten arguments 13"abc{9}def" 14# Valid: two-digit argument numbers 15"abc{00}def" 16# Valid: huge argument numbers 17"abc{500000000}def" 18# Invalid: unterminated 19"abc{" 20# Invalid: unterminated 21"abc{0" 22# Invalid: missing number 23"abc{}def" 24# Invalid: non-digit 25"abc{number}def" 26# Invalid: non-digit 27"abc{-0}def" 28# Valid: two arguments 29"abc{1}def{0}" 30# Valid: multiple uses of same argument 31"abc{1}def{0}ghi{1}" 32# Invalid: broken elementFormat 33"abc{0,}def" 34# Invalid: invalid elementFormat 35"abc{1,string}def" 36# Valid: elementFormat of length 1 37"abc{1,number}def" 38# Valid: elementFormat of length 1 39"abc{1,date}def" 40# Valid: elementFormat of length 1 41"abc{1,time}def" 42# Valid: elementFormat of length 1 43"abc{1,choice}def" 44# Invalid: broken elementFormat 45"abc{1,number,}def" 46# Valid: builtin numberStyle 47"abc{1,number,currency}def" 48# Valid: builtin numberStyle 49"abc{1,number,percent}def" 50# Valid: builtin numberStyle 51"abc{1,number,integer}def" 52# Valid: builtin datetimeStyle 53"abc{1,date,short}def" 54# Valid: builtin datetimeStyle 55"abc{1,date,medium}def" 56# Valid: builtin datetimeStyle 57"abc{1,date,long}def" 58# Valid: builtin datetimeStyle 59"abc{1,date,full}def" 60# Valid: builtin datetimeStyle 61"abc{1,time,short}def" 62# Valid: builtin datetimeStyle 63"abc{1,time,medium}def" 64# Valid: builtin datetimeStyle 65"abc{1,time,long}def" 66# Valid: builtin datetimeStyle 67"abc{1,time,full}def" 68# Valid: dateFormatPattern 69"abc{1,date,foobar}" 70# Valid: dateFormatPattern 71"abc{1,time,foobar}" 72# Valid: dateFormatPattern with comma 73"abc{1,date,foo,bar}" 74# Valid: numberFormatPattern 75"abc{1,number,###,##0}def" 76# Invalid: numberFormatPattern 77"abc{1,number,foobar}" 78# Valid: empty choiceFormatPattern 79"abc{1,choice,}def" 80# Valid: choiceFormatPattern 81"abc{1,choice,0#zero|1#one|2#many}def" 82# Invalid: empty clause in choiceFormatPattern 83"abc{1,choice,|0#zero|1#one|2#many}def" 84# Valid: empty clause at end of choiceFormatPattern 85"abc{1,choice,0#zero|1#one|2#many|}def" 86# Invalid: short clause in choiceFormatPattern 87"abc{1,choice,-1|0#zero|1#one|2#many}def" 88# Valid: short clause at end of choiceFormatPattern 89"abc{1,choice,0#zero|1#one|2#many|3}def" 90# Valid: choiceFormatPattern with different argument 91"abc{1,choice,1#one|2#{0,date}}def" 92# Valid: choiceFormatPattern with same argument 93"abc{1,choice,1#one|2#{1}}def" 94# Valid: choiceFormatPattern with same argument 95"abc{1,choice,1#one|2#{1,number}}def" 96# Invalid: choiceFormatPattern with same argument, type conflict 97"abc{1,choice,1#one|2#{1,date}}def" 98# Invalid: missing opening brace 99"abc1}def{0}" 100# Valid: quoted brace 101"abc1'}'def{0}" 102# Invalid: quoted brace 103"abc{1'}'def" 104# Valid: unterminated quote 105"abc{0}1'}" 106# Valid: quoted brace, '' counts as a single quote 107"abc''1'}'def{0}" 108# Invalid: '' counts as a single quote 109"abc{1''}def" 110# Valid: quote inside elementFormat is hidden 111"abc{1,date,x'y}def" 112# Valid: numberFormatPattern with quote 113"abc{1,number,#0';'}def" 114# Invalid: numberFormatPattern with wrong number syntax 115"abc{1,number,#0;}def" 116# Valid: numberFormatPattern with quote 117"abc{1,number,0.##'E}def" 118# Valid: numberFormatPattern without quote 119"abc{1,number,0.##E}def" 120EOF 121 122: ${XGETTEXT=xgettext} 123n=0 124while read comment; do 125 read string 126 n=`expr $n + 1` 127 tmpfiles="$tmpfiles f-j-1-$n.in f-j-1-$n.po" 128 cat <<EOF > f-j-1-$n.in 129gettext(${string}); 130EOF 131 ${XGETTEXT} -L Java -o f-j-1-$n.po f-j-1-$n.in || exit 1 132 test -f f-j-1-$n.po || exit 1 133 fail= 134 if echo "$comment" | grep 'Valid:' > /dev/null; then 135 if grep java-format f-j-1-$n.po > /dev/null; then 136 : 137 else 138 fail=yes 139 fi 140 else 141 if grep java-format f-j-1-$n.po > /dev/null; then 142 fail=yes 143 else 144 : 145 fi 146 fi 147 if test -n "$fail"; then 148 echo "Format string recognition error:" 1>&2 149 cat f-j-1-$n.in 1>&2 150 echo "Got:" 1>&2 151 cat f-j-1-$n.po 1>&2 152 exit 1 153 fi 154 rm -f f-j-1-$n.in f-j-1-$n.po 155done < f-j-1.data 156 157rm -fr $tmpfiles 158 159exit 0 160