fixes for German translation of edward
[edward.git] / run-tests
CommitLineData
341bb4d5
AE
1#! /bin/bash
2
3#*************************************************************************
4# "run-tests" is free software: you can redistribute it and/or modify *
5# it under the terms of the GNU Affero Public License as published by *
6# the Free Software Foundation, either version 3 of the License, or *
7# (at your option) any later version. *
8# *
9# "run-tests" is distributed in the hope that it will be useful, *
10# but WITHOUT ANY WARRANTY; without even the implied warranty of *
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12# GNU Affero Public License for more details. *
13# *
14# You should have received a copy of the GNU Affero Public License *
15# along with Edward. If not, see <http://www.gnu.org/licenses/>. *
16# *
17# Copyright (C) 2015 Andrew Engelbrecht (AGPLv3+) *
18#*************************************************************************
19
9fee361e 20#TEST_TYPES="gpg-flatten flatten gpg-plain"
e5dd6f23 21TEST_TYPES="gpg-flatten flatten"
341bb4d5 22
a3c531c3 23function _main {
341bb4d5 24
2c5e4c3e 25 TEST_TYPES="$1"
9bd7bfbc 26 SCRIPT_DIR="$(_get_script_dir)"
9bd7bfbc 27
2c5e4c3e
AE
28 _run_all_tests "$SCRIPT_DIR" "$TEST_TYPES"
29}
a3c531c3 30
2c5e4c3e 31function _run_all_tests {
a3c531c3 32
2c5e4c3e
AE
33 SCRIPT_DIR="$1"
34 TEST_TYPES="$2"
a3c531c3 35
2c5e4c3e
AE
36 ERROR_COUNT="0"
37 for TYPE in $TEST_TYPES ; do
38 ERRORS="$(_run_test_type "$SCRIPT_DIR" "$TYPE")"
9bd7bfbc 39
2c5e4c3e 40 ERROR_COUNT="$(expr "$ERROR_COUNT" + "$ERRORS")"
a3c531c3
AE
41 done
42
9bd7bfbc 43 if [ "$ERROR_COUNT" -ne "0" ] ; then
f4eb9a82 44 echo "*** $PROGNAME: FAILED test count: $ERROR_COUNT" >&2
a3c531c3
AE
45 exit 1
46 fi
47
48 exit 0
49
50}
51
2c5e4c3e
AE
52function _run_test_type {
53
54 SCRIPT_DIR="$1"
55 TEST_TYPE="$2"
a3c531c3 56
2c5e4c3e
AE
57 TESTS_DIR="$SCRIPT_DIR/tests"
58 G_HOME="$TESTS_DIR/testgnupghome"
59 EDWARD="$SCRIPT_DIR/edward"
60ccbaf4 60 EDWARD_OPT="-p"
2c5e4c3e
AE
61 FLATTEN_MIME="$TESTS_DIR/flatten-mime"
62
63 ERROR_COUNT="0"
64 for TEST_NAME in $(ls $TESTS_DIR/$TEST_TYPE-*.eml) ; do
65
66 TEST_INPUT="$TEST_NAME"
67 TEST_OUTPUT="$(dirname "$TEST_NAME")/$(basename -s .eml "$TEST_NAME").out"
68
69 if [ ! -f "$TEST_OUTPUT" ] ; then
70 echo "*** $PROGNAME: ERROR: File not found: $TEST_OUTPUT" >&2
71 ERROR_COUNT="$(expr "$ERROR_COUNT" + 1 )"
72 continue
73 fi
74
60ccbaf4 75 ERROR="$("_exec_$TEST_TYPE" "$TEST_NAME" "$G_HOME" "$EDWARD" "$EDWARD_OPT" "$FLATTEN_MIME" "$TEST_INPUT" "$TEST_OUTPUT")"
2c5e4c3e
AE
76
77 ERROR_COUNT="$(expr "$ERROR_COUNT" + "$ERROR")"
78
79 done
80
81 echo "$ERROR_COUNT"
82}
83
84function _exec_gpg-flatten {
85
86 TEST_NAME="$1"
33ecbb5e
AE
87 G_HOME="$2"
88 TEST_EXEC_1="$3"
60ccbaf4
AE
89 TEST_EXEC_1_OPT="$4"
90 TEST_EXEC_2="$5"
91 TEST_INPUT="$6"
92 TEST_OUTPUT="$7"
a3c531c3 93
60ccbaf4 94 PROGRAM_OUT="$(time "$TEST_EXEC_1" "$TEST_EXEC_1_OPT" < "$TEST_INPUT" | GNUPGHOME="$G_HOME" gpg 2> /dev/null | "$TEST_EXEC_2" )"
33ecbb5e 95
2c5e4c3e
AE
96 ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")"
97
98 echo "$ERROR"
99}
100
9fee361e 101function _exec_gpg-plain {
2c5e4c3e
AE
102
103 TEST_NAME="$1"
9fee361e 104 G_HOME="$2"
2c5e4c3e 105 TEST_EXEC_1="$3"
60ccbaf4 106 TEST_EXEC_1_OPT="$4"
60ccbaf4
AE
107 TEST_INPUT="$6"
108 TEST_OUTPUT="$7"
2c5e4c3e 109
9fee361e 110 PROGRAM_OUT="$(time "$TEST_EXEC_1" "$TEST_EXEC_1_OPT" < "$TEST_INPUT" | GNUPGHOME="$G_HOME" gpg 2> /dev/null )"
2c5e4c3e
AE
111
112 ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")"
33ecbb5e
AE
113
114 echo "$ERROR"
2c5e4c3e
AE
115}
116
9fee361e 117function _exec_flatten {
2c5e4c3e
AE
118
119 TEST_NAME="$1"
120 TEST_EXEC_1="$3"
60ccbaf4 121 TEST_EXEC_1_OPT="$4"
9fee361e 122 TEST_EXEC_2="$5"
60ccbaf4
AE
123 TEST_INPUT="$6"
124 TEST_OUTPUT="$7"
2c5e4c3e 125
9fee361e 126 PROGRAM_OUT="$(time "$TEST_EXEC_1" "$TEST_EXEC_1_OPT" < "$TEST_INPUT" | "$TEST_EXEC_2" )"
2c5e4c3e
AE
127
128 ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")"
33ecbb5e 129
2c5e4c3e 130 echo "$ERROR"
33ecbb5e
AE
131}
132
133function _diff {
134
2c5e4c3e 135 TEST_NAME="$1"
33ecbb5e
AE
136 TEST_OUT="$2"
137 PROGRAM_OUT="$3"
138
139 OUT_DIFF="$(echo "$PROGRAM_OUT" | diff -u "$TEST_OUT" - )"
a3c531c3
AE
140
141 if [ -n "$OUT_DIFF" ] ; then
2c5e4c3e 142 echo "*** $PROGNAME: TEST $(basename "$TEST_NAME") FAILED! Output difference:" >&2
a3c531c3
AE
143 echo "$OUT_DIFF" >&2
144
33ecbb5e
AE
145 echo -n "1"
146 return
a3c531c3
AE
147 fi
148
33ecbb5e 149 echo -n "0"
a3c531c3
AE
150}
151
9bd7bfbc
AE
152function _get_script_dir {
153
154 # gives the directory containing this script
155 # https://stackoverflow.com/questions/59895
156 SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
157
158 echo -n "$SCRIPT_DIR"
9bd7bfbc
AE
159}
160
2c5e4c3e
AE
161PROGNAME="$(basename $0)"
162
163_main "$TEST_TYPES"
341bb4d5 164