]> git.saurik.com Git - apple/configd.git/blobdiff - common/reference_output.sh
configd-801.1.1.tar.gz
[apple/configd.git] / common / reference_output.sh
diff --git a/common/reference_output.sh b/common/reference_output.sh
new file mode 100644 (file)
index 0000000..b21ea5e
--- /dev/null
@@ -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 ) <program> <reference_file> [ <filter> ]"
+    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