023d57946ffb50a0dab5bf93e9201e8dd371422b
[mmh] / test / format / test-dp
1 #!/bin/sh
2 ######################################################
3 #
4 # Test dp
5 #
6 ######################################################
7
8 set -e
9
10 if test -z "${MH_OBJ_DIR}"; then
11     srcdir=`dirname $0`/../..
12     MH_OBJ_DIR=`cd $srcdir && pwd`; export MH_OBJ_DIR
13 fi
14
15 . "$MH_OBJ_DIR/test/common.sh"
16
17 setup_test
18
19 # Use proper program, likely not the first one on PATH.
20 dp="${MH_LIB_DIR}/dp"
21
22 expected="$MH_TEST_DIR/$$.expected"
23 expected_err="$MH_TEST_DIR/$$.expected_err"
24 actual="$MH_TEST_DIR/$$.actual"
25 actual_err="$MH_TEST_DIR/$$.actual_err"
26
27
28 # check -help
29 cat >"$expected" <<EOF
30 Usage: dp [switches] dates ...
31   switches are:
32   -form formatfile
33   -(forma)t string
34   -width columns
35   -version
36   -help
37 EOF
38
39 $dp -help >"$actual" 2>&1
40 check "$expected" "$actual"
41
42 # check -version
43 case `$dp -v` in
44   dp\ --*) ;;
45   *           ) printf "$0: dp -v generated unexpected output\n" >&2
46                 failed=`expr ${failed:-0} + 1`;;
47 esac
48
49 # check unknown switch
50 run_test "$dp -nonexistent" 'dp: -nonexistent unknown'
51
52 # check with no switches
53 run_test "$dp" 'dp: usage: dp [switches] dates ...'
54
55 # check with one valid date
56 cat >"$expected" <<EOF
57 Sun, 01 Jul 2012 00:00:00
58 EOF
59
60 $dp 'Sun Jul  1 2012' > "$actual" 2>&1
61 check "$expected" "$actual"
62
63 # check with two valid dates
64 cat >"$expected" <<EOF
65 Sun, 01 Jul 2012 00:00:00
66 Mon, 02 Jul 2012 00:00:00
67 EOF
68
69 $dp 'Sun Jul  1 2012' 'Mon Jul  2 2012' > "$actual" 2>&1
70 check "$expected" "$actual"
71
72 # check with invalid date
73 cat >"$expected" <<EOF
74 error: not a date
75 EOF
76
77 cat >"$expected_err" <<EOF
78 EOF
79
80 $dp 'not a date' > "$actual" 2> "$actual_err"
81 check "$expected" "$actual"
82 check "$expected_err" "$actual_err"
83
84 # check -form
85 form="${MH_TEST_DIR}/Mail/dp-form"
86 cat >"$form" <<'EOF'
87 %(day{text})
88 EOF
89
90 cat >"$expected" <<EOF
91 Sun
92 EOF
93
94 $dp -form "$form" 'Jul 1 2012' >$actual 2>&1
95 check $expected $actual
96 rm -f "$form"
97
98 # check -format
99 cat >"$expected" <<EOF
100 Sun
101 EOF
102
103 $dp -format '%(day{text})' 'Jul 1 2012' >$actual 2>&1
104 check $expected $actual
105
106 # check -width
107 cat >"$expected" <<EOF
108 Sun, 01 Jul 2012
109 EOF
110
111 $dp -width 17 'Sun Jul  1 2012' > "$actual" 2>&1
112 check "$expected" "$actual"
113
114
115 exit ${failed:-0}