From 2c5e4c3ee57e07eff03f00b69b8cb2b0009baa05 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht <sudoman@ninthfloor.org> Date: Mon, 20 Jul 2015 17:44:24 -0400 Subject: [PATCH] further generalization of the testing features --- run-tests | 98 ++++++++++++++++++++++++++++++++++++++--------- tests/plain-1.eml | 6 +++ tests/plain-1.out | 5 +++ 3 files changed, 90 insertions(+), 19 deletions(-) create mode 100644 tests/plain-1.eml create mode 100644 tests/plain-1.out diff --git a/run-tests b/run-tests index 76894e0..b1d20d7 100755 --- a/run-tests +++ b/run-tests @@ -18,27 +18,27 @@ #************************************************************************* NUM_TESTS=1 +#TEST_TYPES="gpg-flatten flatten plain" +TEST_TYPES="gpg-flatten plain" function _main { - COUNT=$1 - + TEST_TYPES="$1" SCRIPT_DIR="$(_get_script_dir)" - TESTS_DIR="$SCRIPT_DIR/tests" - G_HOME="$TESTS_DIR/testgnupghome" - EDWARD="$SCRIPT_DIR/edward" - FLATTEN_MIME="$TESTS_DIR/flatten-mime" - ERROR_COUNT="0" - for i in $(seq "$COUNT") ; do + _run_all_tests "$SCRIPT_DIR" "$TEST_TYPES" +} - TEST_INPUT="$TESTS_DIR/gpg-flatten-$i.eml" - TEST_OUTPUT="$TESTS_DIR/gpg-flatten-$i.out" +function _run_all_tests { - ERROR="$(_exec_gpg_flatten "$i" "$G_HOME" "$EDWARD" "$FLATTEN_MIME" "$TEST_INPUT" "$TEST_OUTPUT")" + 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" -ne "0" ] ; then @@ -50,9 +50,40 @@ function _main { } -function _exec_gpg_flatten { +function _run_test_type { + + SCRIPT_DIR="$1" + TEST_TYPE="$2" - TEST_NUM="$1" + TESTS_DIR="$SCRIPT_DIR/tests" + G_HOME="$TESTS_DIR/testgnupghome" + EDWARD="$SCRIPT_DIR/edward" + 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" "$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_2="$4" @@ -61,22 +92,50 @@ function _exec_gpg_flatten { PROGRAM_OUT="$(time "$TEST_EXEC_1" < "$TEST_INPUT" | GNUPGHOME="$G_HOME" gpg 2> /dev/null | "$TEST_EXEC_2" )" - ERROR="$(_diff "$TEST_NUM" "$TEST_OUTPUT" "$PROGRAM_OUT")" + ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")" + + echo "$ERROR" +} + +function _exec_flatten { + + TEST_NAME="$1" + TEST_EXEC_1="$3" + TEST_EXEC_2="$4" + TEST_INPUT="$5" + TEST_OUTPUT="$6" + + PROGRAM_OUT="$(time "$TEST_EXEC_1" < "$TEST_INPUT" | "$TEST_EXEC_2" )" + + ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")" echo "$ERROR" +} + +function _exec_plain { + + TEST_NAME="$1" + TEST_EXEC_1="$3" + TEST_INPUT="$5" + TEST_OUTPUT="$6" + + PROGRAM_OUT="$(time "$TEST_EXEC_1" < "$TEST_INPUT" )" + + ERROR="$(_diff "$TEST_NAME" "$TEST_OUTPUT" "$PROGRAM_OUT")" + echo "$ERROR" } function _diff { - TEST_NUM="$1" + 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 $TEST_NUM FAILED! Output difference:" >&2 + echo "*** $PROGNAME: TEST $(basename "$TEST_NAME") FAILED! Output difference:" >&2 echo "$OUT_DIFF" >&2 echo -n "1" @@ -93,8 +152,9 @@ function _get_script_dir { SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) echo -n "$SCRIPT_DIR" - } -_main $NUM_TESTS +PROGNAME="$(basename $0)" + +_main "$TEST_TYPES" diff --git a/tests/plain-1.eml b/tests/plain-1.eml new file mode 100644 index 0000000..316a373 --- /dev/null +++ b/tests/plain-1.eml @@ -0,0 +1,6 @@ +From: No One <noone@localhost> +To: No One <noone@localhost> +Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?= + +DO YOU READ ME CAPTAIN??!!1 o_O + diff --git a/tests/plain-1.out b/tests/plain-1.out new file mode 100644 index 0000000..c5a2dc9 --- /dev/null +++ b/tests/plain-1.out @@ -0,0 +1,5 @@ +To: No One <noone@localhost> +Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?= + +Sorry, i couldn't find your key. +I'll need that to encrypt a message to you. -- 2.25.1