Home | History | Annotate | Line # | Download | only in tests
      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