fix incomplete lookups for uci.get()
[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 assertNotSegFault()
44 {
45         [ $1 -eq 139 ] && fail "Returned with 139: segmentation fault (SIGSEGV)!!!"
46 }
47 assertNotIllegal()
48 {
49         [ $1 -eq 132 ] && fail "Returned with 132: Illegal instruction (SIGILL)!!!"
50 }
51 assertFailWithNoReturn() {
52         local test="$1"
53         value=$( $test )
54         rv=$?
55         assertFalse "'$test' does not fail" $rv
56         assertNotSegFault $rv
57         assertNotIllegal $rv
58         assertNull "'$test' returns '$value'" "$value"
59 }
60 EOF
61
62 for suite in $(ls ${SCRIPTS_DIR}/*)
63 do
64         cat ${suite} >> ${FULL_SUITE}
65 done
66
67 echo ". ${DO_TEST}" >> ${FULL_SUITE}
68
69 REF_DIR="${REF_DIR}" \
70 CONFIG_DIR="${CONFIG_DIR}" \
71 CHANGES_DIR="${CHANGES_DIR}" \
72 TMP_DIR="${TMP_DIR}" \
73 UCI="${UCI}" \
74 /bin/sh ${FULL_SUITE}
75
76 rm -rf ${TESTS_DIR}