X-Git-Url: https://git.saurik.com/apple/configd.git/blobdiff_plain/b7ffbc6af5a0697ee3d9a3052dedfebc6b8270dd..9de8ab86392ba34369adc6be0bfc21bad9b7caa2:/common/reference_output.sh diff --git a/common/reference_output.sh b/common/reference_output.sh new file mode 100644 index 0000000..b21ea5e --- /dev/null +++ b/common/reference_output.sh @@ -0,0 +1,87 @@ +#!/bin/sh + +tmpfile=/tmp/test_reference_output$$.txt + +cleanup() +{ + if [ -f "${tmpfile}" ]; then + echo removing "${tmpfile}" + rm -f "${tmpfile}" + fi + exit 1 +} + +trap cleanup 1 2 3 15 + +run_program() +{ + program="${1}" + filter="${2}" + if [ "${filter}" = "" ]; then + ${program} + else + ${program} | ${filter} + fi +} + +usage() +{ + echo "usage: $0 ( create | test ) [ ]" + exit 1 +} + +command="${1}" +program="${2}" +ref_file="${3}" +filter="${4}" + +if [ "${ref_file}" = "" ]; then + usage "${0}" +fi + +if [ "${program}" = "" ]; then + usage "${0}" +fi + +if [ ! -f "${program}" ]; then + echo "program '${program}' doesn't exit" + exit 1 +fi +if [ ! -x "${program}" ]; then + program="sh ${program}" +fi +# echo "The program is ${program}" + +if [ ! "${filter}" = "" ]; then + if [ ! -f "${filter}" ]; then + echo "filter '${filter}' doesn't exit" + exit 1 + fi + if [ ! -x "${filter}" ]; then + filter="sh ${filter}" + fi +# echo "The filter is ${filter}" +else + echo no filter +fi + +if [ "${command}" = "create" ]; then + run_program "${program}" "${filter}" > "${ref_file}" +elif [ "${command}" = "test" ]; then + if [ ! -f "${ref_file}" ]; then + echo "reference file '${ref_file}' doesn't exist" + exit 1 + fi + run_program "${program}" "${filter}" > "${tmpfile}" + cmp "${tmpfile}" "${ref_file}" + if [ ! $? -eq 0 ]; then + echo FAILURE + diff "${tmpfile}" "${ref_file}" + exit 1 + fi + echo SUCCESS +else + usage "${0}" +fi + +exit 0