Adds a unit test framework based on shunit2
[project/uci.git] / test / tests.sh
diff --git a/test/tests.sh b/test/tests.sh
new file mode 100644 (file)
index 0000000..52f1384
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+TESTS_DIR="./tests"
+CONFIG_DIR=${TESTS_DIR}"/config"
+CHANGES_DIR="/tmp/.uci"
+TMP_DIR=${TESTS_DIR}"/tmp"
+FULL_SUITE=${TESTS_DIR}"/full_suite.sh"
+
+UCI_STATIC="../uci-static"
+[ -x $UCI_STATIC ] || {
+       echo "uci-static is not present."
+       return 1
+}
+UCI="${UCI_STATIC} -c ${CONFIG_DIR} -p ${CHANGES_DIR}"
+
+REF_DIR="./references"
+SCRIPTS_DIR="./tests.d"
+DO_TEST="./shunit2/shunit2"
+
+rm -rf ${TESTS_DIR}
+mkdir -p ${TESTS_DIR}
+
+cat << 'EOF' > ${FULL_SUITE}
+setUp() {
+       mkdir -p ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
+}
+tearDown() {
+       rm -rf ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
+}
+assertSameFile() {
+       local ref=$1
+       local test=$2
+       diff -qr $ref $test
+       assertTrue $? || {
+               echo "REF:"
+               cat $ref
+               echo "----"
+               echo "TEST:"
+               cat $test
+               echo "----"
+       }
+}
+EOF
+
+for suite in $(ls ${SCRIPTS_DIR}/*)
+do
+       cat ${suite} >> ${FULL_SUITE}
+done
+
+echo ". ${DO_TEST}" >> ${FULL_SUITE}
+
+REF_DIR="${REF_DIR}" \
+CONFIG_DIR="${CONFIG_DIR}" \
+CHANGES_DIR="${CHANGES_DIR}" \
+TMP_DIR="${TMP_DIR}" \
+UCI="${UCI}" \
+/bin/sh ${FULL_SUITE}
+
+rm -rf ${TESTS_DIR}