Adds a unit test framework based on shunit2
[project/uci.git] / test / tests.sh
1 #!/bin/sh
2
3 TESTS_DIR="./tests"
4 CONFIG_DIR=${TESTS_DIR}"/config"
5 CHANGES_DIR="/tmp/.uci"
6 TMP_DIR=${TESTS_DIR}"/tmp"
7 FULL_SUITE=${TESTS_DIR}"/full_suite.sh"
8
9 UCI_STATIC="../uci-static"
10 [ -x $UCI_STATIC ] || {
11 echo "uci-static is not present."
12 return 1
13 }
14 UCI="${UCI_STATIC} -c ${CONFIG_DIR} -p ${CHANGES_DIR}"
15
16 REF_DIR="./references"
17 SCRIPTS_DIR="./tests.d"
18 DO_TEST="./shunit2/shunit2"
19
20 rm -rf ${TESTS_DIR}
21 mkdir -p ${TESTS_DIR}
22
23 cat << 'EOF' > ${FULL_SUITE}
24 setUp() {
25 mkdir -p ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
26 }
27 tearDown() {
28 rm -rf ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
29 }
30 assertSameFile() {
31 local ref=$1
32 local test=$2
33 diff -qr $ref $test
34 assertTrue $? || {
35 echo "REF:"
36 cat $ref
37 echo "----"
38 echo "TEST:"
39 cat $test
40 echo "----"
41 }
42 }
43 EOF
44
45 for suite in $(ls ${SCRIPTS_DIR}/*)
46 do
47 cat ${suite} >> ${FULL_SUITE}
48 done
49
50 echo ". ${DO_TEST}" >> ${FULL_SUITE}
51
52 REF_DIR="${REF_DIR}" \
53 CONFIG_DIR="${CONFIG_DIR}" \
54 CHANGES_DIR="${CHANGES_DIR}" \
55 TMP_DIR="${TMP_DIR}" \
56 UCI="${UCI}" \
57 /bin/sh ${FULL_SUITE}
58
59 rm -rf ${TESTS_DIR}