just reformatting
[mala.git] / tests / test.sh
blobe327cb2131f6f68984d83dbec1240bbca4412a8f
1 #!/bin/sh
2 # Copyright (C) 2004, Christian Thaeter <chth@gmx.net>
4 # This file is part of the MaLa extension Language.
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License version 2 as
8 # published by the Free Software Foundation.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, contact me.
18 # TESTMODE=FULL yet unimplemented
19 # run all tests, PLANNED which fail count as error
21 # TESTMODE=FAST
22 # run only tests which recently failed
24 arg0="$0"
25 srcdir=$(dirname "$arg0")
27 ulimit -S -t 1 -v 524288
28 valgrind=""
29 if [ "$VALGRINDFLAGS" = 'DISABLE' ]; then
30 echo "valgrind explicit disabled"
31 else
32 if [ "$(which valgrind)" ]; then
33 valgrind="$(which valgrind) --suppressions=$srcdir/../valgrind.sup --leak-check=yes --show-reachable=yes -q $VALGRINDFLAGS"
34 ulimit -S -t 10
35 else
36 echo "no valgrind found, go without it"
40 echo
41 echo ================ $0 ================
43 TESTCNT=0
44 SKIPCNT=0
45 FAILCNT=0
47 if test -f ,testlog; then
48 mv ,testlog ,testlog.pre
49 else
50 touch ,testlog.pre
53 date >,testlog
55 function TEST()
57 name="$1"
58 shift
59 cat >,cmp
60 echo -n "" >,out
61 echo -n "TEST $name: "
62 echo -en "\nTEST $name: $* " >>,testlog
64 case $TESTMODE in
65 *FAST*)
66 if grep "^TEST $name: .* FAILED" ,testlog.pre >&/dev/null; then
67 MSGOK=" (fixed)"
68 MSGFAIL=" (still broken)"
69 elif grep "^TEST $name: .* \\(SKIPPED (ok)\\|OK\\)" ,testlog.pre >&/dev/null; then
70 echo ".. SKIPPED (ok)"
71 echo ".. SKIPPED (ok)" >>,testlog
72 SKIPCNT=$(($SKIPCNT + 1))
73 TESTCNT=$(($TESTCNT + 1))
74 return
75 else
76 MSGOK=" (new)"
77 MSGFAIL=" (new)"
81 MSGOK=""
82 MSGFAIL=""
84 esac
86 TESTCNT=$(($TESTCNT + 1))
87 if $valgrind $TESTBIN "$@" 2>&1 | tee ,tmp | grep -v 'DEBUG:' | cmp ,cmp - &>/dev/null; then
88 echo ".. OK$MSGOK"
89 echo ".. OK$MSGOK" >>,testlog
90 else
91 echo ".. FAILED$MSGFAIL";
92 echo ".. FAILED$MSGFAIL" >>,testlog
93 grep -v 'DEBUG:' <,tmp >,out
94 diff -ua ,cmp ,out >>,testlog
95 # grep 'DEBUG:\|==.*==' <,tmp >>,testlog
96 cat ,tmp >>,testlog
97 echo END >>,testlog
98 FAILCNT=$(($FAILCNT + 1))
99 case $TESTMODE in
100 *FIRSTFAIL*)
101 break 2
103 esac
107 function PLANNED()
109 echo -n "PLANNED $1: "
110 echo -en "\nPLANNED $* " >>,testlog
111 echo ".. SKIPPED (planned)"
112 echo ".. SKIPPED (planned)" >>,testlog
113 SKIPCNT=$(($SKIPCNT + 1))
114 TESTCNT=$(($TESTCNT + 1))
117 function RUNTESTS()
119 for i in $srcdir/*.tests; do
120 source $i
121 done
122 echo
123 rm ,cmp ,out ,tmp
124 if [ $FAILCNT = 0 ]; then
125 echo " ... PASSED $(($TESTCNT - $SKIPCNT)) TESTS, $SKIPCNT SKIPPED"
126 #rm ,testlog
127 else
128 echo " ... SUCCEDED $(($TESTCNT - $FAILCNT - $SKIPCNT)) TESTS"
129 echo " ... FAILED $FAILCNT TESTS"
130 echo " ... SKIPPED $SKIPCNT TESTS"
131 echo " see ',testlog' for details"
132 exit 1
136 function TESTING()
138 echo
139 echo "$1"
140 TESTBIN=$2
143 RUNTESTS
145 # arch-tag: f4d06a47-6e17-40de-bba8-17240ae3f435