1#!/bin/sh 2 3tmpfile=/tmp/test_reference_output$$.txt 4 5cleanup() 6{ 7 if [ -f "${tmpfile}" ]; then 8 echo removing "${tmpfile}" 9 rm -f "${tmpfile}" 10 fi 11 exit 1 12} 13 14trap cleanup 1 2 3 15 15 16run_program() 17{ 18 program="${1}" 19 filter="${2}" 20 if [ "${filter}" = "" ]; then 21 ${program} 22 else 23 ${program} | ${filter} 24 fi 25} 26 27usage() 28{ 29 echo "usage: $0 ( create | test ) <program> <reference_file> [ <filter> ]" 30 exit 1 31} 32 33command="${1}" 34program="${2}" 35ref_file="${3}" 36filter="${4}" 37 38if [ "${ref_file}" = "" ]; then 39 usage "${0}" 40fi 41 42if [ "${program}" = "" ]; then 43 usage "${0}" 44fi 45 46if [ ! -f "${program}" ]; then 47 echo "program '${program}' doesn't exit" 48 exit 1 49fi 50if [ ! -x "${program}" ]; then 51 program="sh ${program}" 52fi 53# echo "The program is ${program}" 54 55if [ ! "${filter}" = "" ]; then 56 if [ ! -f "${filter}" ]; then 57 echo "filter '${filter}' doesn't exit" 58 exit 1 59 fi 60 if [ ! -x "${filter}" ]; then 61 filter="sh ${filter}" 62 fi 63# echo "The filter is ${filter}" 64else 65 echo no filter 66fi 67 68if [ "${command}" = "create" ]; then 69 run_program "${program}" "${filter}" > "${ref_file}" 70elif [ "${command}" = "test" ]; then 71 if [ ! -f "${ref_file}" ]; then 72 echo "reference file '${ref_file}' doesn't exist" 73 exit 1 74 fi 75 run_program "${program}" "${filter}" > "${tmpfile}" 76 cmp "${tmpfile}" "${ref_file}" 77 if [ ! $? -eq 0 ]; then 78 echo FAILURE 79 diff "${tmpfile}" "${ref_file}" 80 exit 1 81 fi 82 echo SUCCESS 83else 84 usage "${0}" 85fi 86 87exit 0 88