1 1.1 christos #!/bin/sh 2 1.1 christos 3 1.1 christos #set -x 4 1.1 christos 5 1.1 christos if [ $# -ne 1 ]; then 6 1.1 christos echo "usage: $0 test-name" >&2 7 1.1 christos exit 1 8 1.1 christos fi 9 1.1 christos 10 1.1 christos file=$1 11 1.1 christos 12 1.1 christos cd "$(dirname "$0")" 13 1.1 christos 14 1.1 christos isin=$(expr $file : ".*\.in*") 15 1.1 christos iserr=$(expr $file : ".*\.err*") 16 1.1 christos if [ \( $isin -eq 0 \) -a \( $iserr -eq 0 \) ]; then 17 1.1 christos full=$file.in* 18 1.1 christos if [ ! -f $full ]; then 19 1.1 christos full=$file.err* 20 1.1 christos fi 21 1.1 christos else 22 1.1 christos full=$file 23 1.1 christos fi 24 1.1 christos 25 1.1 christos if [ ! -f $full ]; then 26 1.1 christos echo "can't find $file" >&2 27 1.1 christos exit 1 28 1.1 christos fi 29 1.1 christos 30 1.1 christos errcase=$(expr $full : ".*\.err*") 31 1.1 christos 32 1.1 christos trail= 33 1.1 christos if [ $errcase -eq 0 ]; then 34 1.1 christos trail=$(expr $full : ".*\.in\(.\)") 35 1.1 christos else 36 1.1 christos trail=$(expr $full : ".*\.err\(.\)") 37 1.1 christos fi 38 1.1 christos 39 1.1 christos options="" 40 1.1 christos dual=0 41 1.1 christos hook=0 42 1.1 christos 43 1.1 christos case $trail in 44 1.1 christos '') dual=1;; 45 1.1 christos 4) options="-4";; 46 1.1 christos 6) options="-6";; 47 1.1 christos F) options="-4 -r fatal";; 48 1.1 christos P) options="-4 -r pass";; 49 1.1 christos d) options="-4 -D";; 50 1.1 christos D) options="-6 -D";; 51 1.1 christos n) options="-4 -N";; 52 1.1 christos N) options="-6 -N";; 53 1.1 christos l) options="-4 -l ${HOOK:-/path/}"; hook=1;; 54 1.1 christos L) options="-6 -l ${HOOK:-/path/}"; hook=1;; 55 1.1 christos *) echo "unrecognized trail '$trail' in '$full'" >&2; exit 1;; 56 1.1 christos esac 57 1.1 christos 58 1.1 christos if [ $errcase -ne 0 ]; then 59 1.1 christos base=$(basename $full .err$trail) 60 1.1 christos else 61 1.1 christos if [ $dual -ne 0 ]; then 62 1.1 christos echo "required trail ([45FP]) in '$full'" >&2 63 1.1 christos exit 1 64 1.1 christos fi 65 1.1 christos base=$(basename $full .in$trail) 66 1.1 christos fi 67 1.1 christos 68 1.1 christos out=/tmp/$base.out$$ 69 1.1 christos expected="" 70 1.1 christos if [ $errcase -ne 0 ]; then 71 1.1 christos expected=$base.msg 72 1.1 christos else 73 1.1 christos expected=$base.out 74 1.1 christos fi 75 1.1 christos 76 1.1 christos if [ $errcase -ne 0 ]; then 77 1.1 christos if [ $dual -eq 1 ]; then 78 1.1 christos ../keama -4 -i $full >$out 2>&1 79 1.1 christos if [ $? -ne 255 ]; then 80 1.1 christos echo "$full -4 doesn't fail as expected" >&2 81 1.1 christos exit 1 82 1.1 christos fi 83 1.1 christos ../keama -6 -i $full >$out 2>&1 84 1.1 christos if [ $? -ne 255 ]; then 85 1.1 christos echo "$full -6 doesn't fail as expected" >&2 86 1.1 christos exit 1 87 1.1 christos fi 88 1.1 christos else 89 1.1 christos ../keama $options -i $full >$out 2>&1 90 1.1 christos if [ $? -ne 255 ]; then 91 1.1 christos echo "$full doesn't fail as expected" >&2 92 1.1 christos exit 1 93 1.1 christos fi 94 1.1 christos fi 95 1.1 christos else 96 1.1 christos ../keama $options -i $full -o $out >&2 97 1.1 christos if [ $? -eq 255 ]; then 98 1.1 christos echo "$full raised an error" >&2 99 1.1 christos exit 1 100 1.1 christos fi 101 1.1 christos fi 102 1.1 christos 103 1.1 christos if [ $hook -eq 1 ]; then 104 1.1 christos sed s,/path/,${HOOK:-/path/}, < ${expected}L > $expected 105 1.1 christos fi 106 1.1 christos 107 1.1 christos if [ $errcase -ne 0 ]; then 108 1.1 christos cat $out | head -1 | diff --brief - $expected 109 1.1 christos if [ $? -ne 0 ]; then 110 1.1 christos echo "$full doesn't provide expected output" >&2 111 1.1 christos exit 1 112 1.1 christos fi 113 1.1 christos else 114 1.1 christos diff --brief $out $expected 115 1.1 christos if [ $? -ne 0 ]; then 116 1.1 christos echo "$full doesn't provide expected output" >&2 117 1.1 christos exit 1 118 1.1 christos fi 119 1.1 christos fi 120