better error handling
[mmh] / test / runtest
1 #!/bin/sh
2
3 set -e
4
5 export MH_TEST_COMMON="$PWD/common.sh"
6
7 if [ ! -f test-temp-dir ]; then
8         echo "test-temp-dir not found: running setup-test"
9         ./setup-test
10 fi
11
12 export MH_TEST_DIR=`cat test-temp-dir`
13
14 if [ ! -f "$MH_TEST_DIR/build/Makefile" ]; then
15         echo "temporary directory missing or broken: running setup-test"
16         ./setup-test
17         export MH_TEST_DIR=`cat test-temp-dir`
18 fi
19
20 unset MMHP MMHC
21 export PATH="$MH_TEST_DIR/bin:$PATH"
22 export MMH="$MH_TEST_DIR/.mmh"
23 MAILDIR="$MH_TEST_DIR/Mail"
24
25 # clean old test data
26 rm -rf "$MAILDIR" "$MMH"
27
28 # setup mmh
29 mkdir "$MAILDIR" "$MMH"
30 cat >"$MMH/profile" <<-!
31         Path: $MAILDIR
32         Inbox: +inbox
33 !
34 folder -create `mhparam inbox` >/dev/null
35 folder -create `mhparam trashfolder` >/dev/null
36 folder -create `mhparam draftfolder` >/dev/null
37
38 # create 10 basic messages
39 for i in `seq 1 10`;
40 do
41         cat >"$MAILDIR/inbox/$i" <<-!
42                 From: Test$i <test$i@example.com>
43                 To: Some User <user@example.com>
44                 Date: Fri, 29 Sep 2006 00:00:00
45                 Subject: Testing message $i
46
47                 This is message number $i
48         !
49 done
50 folder +inbox >/dev/null
51
52 # now run the test
53 set +e
54 export SHELL="${SHELL:-/bin/sh}"
55 /bin/sh "$1"
56 return_value=$?
57 set -e
58
59 if [ $return_value -eq 0 ] ; then
60         printf "Test %-60s\tPASS\n" "$1"
61         exit 0
62 elif [ $return_value -eq 120 ]; then
63         # indicates test was skipped (eg needed program not found)
64         # test itself should have printed a message about this,
65         # so print nothing here.
66         printf "Test %-60s\tSKIP\n" "$1"
67         exit 2
68 else
69         printf "Test %-60s\tFAIL\n" "$1"
70         exit 1
71 fi