In test-post-common.sh and test-mhmail, wait for fakesmtp to start
[mmh] / test / post / test-post-common.sh
1 #!/bin/sh
2 #
3 # Common routines for the post tests
4 #
5
6 set -e
7
8 . "${MH_OBJ_DIR}/test/common.sh"
9
10 setup_test
11
12 localport=65412
13 testname="${MH_TEST_DIR}/$$"
14
15 #
16 # Set this for the EHLO command
17 #
18
19 echo "clientname: nosuchhost.example.com" >> ${MHMTSCONF}
20
21 #
22 # One "post" test run.  Ok, yeah, we're using "send", but that's just
23 # because it's easier.
24 # $1: output filename for fakesmtp, i.e., the sent message
25 # $2: expected output
26 # $3: optional switches for send
27
28 test_post ()
29 { "${MH_OBJ_DIR}/test/fakesmtp" "$1" $localport &
30     pid="$!"
31
32     # The server doesn't always come up fast enough, so sleep and
33     # retry a few times if it fails...
34     status=1
35     for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
36         if send -draft -server 127.0.0.1 -port $localport $3
37         then
38             status=0
39             break
40         fi
41         sleep 2
42     done
43     if [ $status -ne 0 ]; then
44       printf '%s: send failed, was fakesmtp given enough time to start?\n' \
45              "$0" >&2
46       exit 1
47     fi
48
49     wait ${pid}
50
51     #
52     # It's hard to calculate the exact Date: header post is going to
53     # use, so we'll just use sed to remove the actual date so we can easily
54     # compare it against our "correct" output.
55     #
56
57     sed -e 's/^Date:.*/Date:/' "$1" > "$1".nodate
58     rm -f "$1"
59
60     check "$1".nodate "$2"
61 }