1#! /bin/sh 2. "${srcdir=.}/init.sh"; path_prepend_ . ../src 3 4# Test recognition of Perl format strings. 5 6cat <<\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" 129EOF 130 131: ${XGETTEXT=xgettext} 132n=0 133while read comment; do 134 read string 135 n=`expr $n + 1` 136 sed -e 's,\$,\\$,g' <<EOF > f-pl-1-$n.in 137gettext(${string}); 138EOF 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 163done < f-pl-1.data 164 165Exit 0 166