summaryrefslogtreecommitdiff
path: root/test/tests.sh
blob: 0afccf0c5a87017fa11430ca45627eccd3454c54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/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_BIN="../uci"
[ -x $UCI_BIN ] || {
	echo "uci-static is not present."
	return 1
}
UCI="${UCI_BIN} -c ${CONFIG_DIR} -p ${CHANGES_DIR}"
UCI_Q="${UCI_BIN} -c ${CONFIG_DIR} -p ${CHANGES_DIR} -q"

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 "----"
	}
}
assertNotSegFault()
{
	[ $1 -eq 139 ] && fail "Returned with 139: segmentation fault (SIGSEGV)!!!"
}
assertNotIllegal()
{
	[ $1 -eq 132 ] && fail "Returned with 132: Illegal instruction (SIGILL)!!!"
}
assertFailWithNoReturn() {
	local test="$1"
	value=$( $test )
	rv=$?
	assertFalse "'$test' does not fail" $rv
	assertNotSegFault $rv
	assertNotIllegal $rv
	assertNull "'$test' returns '$value'" "$value"
}
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}" \
UCI_Q="${UCI_Q}" \
/bin/sh ${FULL_SUITE}

rm -rf ${TESTS_DIR}