X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=run-tests;h=30095eb2b4419eb8440398cac60e49b38e8f336a;hb=c68461f1d6c20adcfd3a9acece871b2d9af928fb;hp=a16fa00e3447dbddf20ca10e8f28f3b0d243142c;hpb=a3c531c360fa93e36b862087450f34129b6f49cc;p=edward.git diff --git a/run-tests b/run-tests index a16fa00..30095eb 100755 --- a/run-tests +++ b/run-tests @@ -17,27 +17,31 @@ # Copyright (C) 2015 Andrew Engelbrecht (AGPLv3+) * #************************************************************************* -NUM_TESTS=1 -G_HOME=./tests/testgnupghome +#TEST_TYPES="gpg-flatten flatten gpg-plain" +TEST_TYPES="gpg-flatten flatten" function _main { - COUNT=$1 + TEST_TYPES="$1" + SCRIPT_DIR="$(_get_script_dir)" - ERROR_COUNT="0" - for i in $(seq "$COUNT") ; do + _run_all_tests "$SCRIPT_DIR" "$TEST_TYPES" +} - TEST_INPUT="./tests/test$i.eml" - TEST_OUTPUT="./tests/out$i.txt" +function _run_all_tests { - _exec_compare "$TEST_INPUT" "$TEST_OUTPUT" - ERROR=$? + SCRIPT_DIR="$1" + TEST_TYPES="$2" - ERROR_COUNT="$(expr "$ERROR_COUNT" + "$ERROR")" + ERROR_COUNT="0" + for TYPE in $TEST_TYPES ; do + ERRORS="$(_run_test_type "$SCRIPT_DIR" "$TYPE")" + + ERROR_COUNT="$(expr "$ERROR_COUNT" + "$ERRORS")" done - if [ "$ERROR_COUNT" != "0" ] ; then - echo "*** Failed test count: $ERROR_COUNT" >&2 + if [ "$ERROR_COUNT" -ne "0" ] ; then + echo "*** $PROGNAME: FAILED test count: $ERROR_COUNT" >&2 exit 1 fi @@ -45,22 +49,116 @@ function _main { } -function _exec_compare { +function _run_test_type { + + SCRIPT_DIR="$1" + TEST_TYPE="$2" + + TESTS_DIR="$SCRIPT_DIR/tests" + G_HOME="$TESTS_DIR/testgnupghome" + EDWARD="$SCRIPT_DIR/edward" + EDWARD_OPT="-p" + FLATTEN_MIME="$TESTS_DIR/flatten-mime" + + ERROR_COUNT="0" + for TEST_NAME in $(ls $TESTS_DIR/$TEST_TYPE-*.eml) ; do + + TEST_INPUT="$TEST_NAME" + TEST_OUTPUT="$(dirname "$TEST_NAME")/$(basename -s .eml "$TEST_NAME").out" + + if [ ! -f "$TEST_OUTPUT" ] ; then + echo "*** $PROGNAME: ERROR: File not found: $TEST_OUTPUT" >&2 + ERROR_COUNT="$(expr "$ERROR_COUNT" + 1 )" + continue + fi + + ERROR="$("_exec_$TEST_TYPE" "$TEST_NAME" "$G_HOME" "$EDWARD" "$EDWARD_OPT" "$FLATTEN_MIME" "$TEST_INPUT" "$TEST_OUTPUT")" + + ERROR_COUNT="$(expr "$ERROR_COUNT" + "$ERROR")" + + done + + echo "$ERROR_COUNT" +} + +function _exec_gpg-flatten { + + TEST_NAME="$1" + G_HOME="$2" + TEST_EXEC_1="$3" + TEST_EXEC_1_OPT="$4" + TEST_EXEC_2="$5" + TEST_INPUT="$6" + TEST_OUTPUT="$7" + + PROGRAM_OUT="$(time "$TEST_EXEC_1" "$TEST_EXEC_1_OPT" < "$TEST_INPUT" | GNUPGHOME="$G_HOME" gpg 2> /dev/null | "$TEST_EXEC_2" )" + + ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")" + + echo "$ERROR" +} + +function _exec_gpg-plain { + + TEST_NAME="$1" + G_HOME="$2" + TEST_EXEC_1="$3" + TEST_EXEC_1_OPT="$4" + TEST_INPUT="$6" + TEST_OUTPUT="$7" + + PROGRAM_OUT="$(time "$TEST_EXEC_1" "$TEST_EXEC_1_OPT" < "$TEST_INPUT" | GNUPGHOME="$G_HOME" gpg 2> /dev/null )" + + ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")" + + echo "$ERROR" +} + +function _exec_flatten { + + TEST_NAME="$1" + TEST_EXEC_1="$3" + TEST_EXEC_1_OPT="$4" + TEST_EXEC_2="$5" + TEST_INPUT="$6" + TEST_OUTPUT="$7" - TEST_INPUT="$1" - TEST_OUTPUT="$2" + PROGRAM_OUT="$(time "$TEST_EXEC_1" "$TEST_EXEC_1_OPT" < "$TEST_INPUT" | "$TEST_EXEC_2" )" - OUT_DIFF="$(time ./edward < "$TEST_INPUT" | GNUPGHOME="$G_HOME" gpg 2> /dev/null | ./tests/flatten-mime | diff -Z -u "$TEST_OUTPUT" - )" + ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")" + + echo "$ERROR" +} + +function _diff { + + TEST_NAME="$1" + TEST_OUT="$2" + PROGRAM_OUT="$3" + + OUT_DIFF="$(echo "$PROGRAM_OUT" | diff -u "$TEST_OUT" - )" if [ -n "$OUT_DIFF" ] ; then - echo "*** test 1 failed! difference:" >&2 + echo "*** $PROGNAME: TEST $(basename "$TEST_NAME") FAILED! Output difference:" >&2 echo "$OUT_DIFF" >&2 - return 1 + echo -n "1" + return fi - return 0 + echo -n "0" } -_main $NUM_TESTS +function _get_script_dir { + + # gives the directory containing this script + # https://stackoverflow.com/questions/59895 + SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + + echo -n "$SCRIPT_DIR" +} + +PROGNAME="$(basename $0)" + +_main "$TEST_TYPES"