diff options
Diffstat (limited to 'tests/assert.sh')
| -rw-r--r-- | tests/assert.sh | 67 |
1 files changed, 44 insertions, 23 deletions
diff --git a/tests/assert.sh b/tests/assert.sh index 73b5dd4..cae9924 100644 --- a/tests/assert.sh +++ b/tests/assert.sh @@ -1,34 +1,55 @@ -function assert_error() +test_error=0 + +function print_assert_out_error() { - expected_stderr="$1" + echo "assert: $1 does not contain expected string" + echo " actual: $2" + echo " expected: $3" +} - shift 1 - actual_stderr="$("$@" 2>&1 1>/dev/null)" - retval=$? - is_stderr_expected="$(echo "$actual_stderr" | grep -i "$expected_stderr")" +function assert_retval() +{ + if [ $1 -ne $2 ]; then + echo "assert: Return value is $1, expected $2" + test_error=1 + fi +} - if [ $retval -eq 0 ]; then - echo "assert_error: Return value is $retval, expected != 0" - exit 1 - elif [ -z "$is_stderr_expected" ]; then - echo "assert_error: stderr does not contain expected string" - echo " actual: $actual_stderr" - echo " expected: $expected_stderr" - exit 1 +function assert_out() +{ + if [ -z "$2" -a -z "$3" ]; then + return + elif [ -z "$2" -a -n "$3" ]; then + print_assert_out_error $1 "$2" "$3" + elif [ -n "$2" -a -z "$3" ]; then + print_assert_out_error $1 "$2" "$3" + else + is_stderr_expected="$(echo "$2" | grep -i "$3")" + if [ -z "$is_stderr_expected" ]; then + print_assert_out_error $1 "$2" "$3" + fi fi } -function assert_success() +function assert() { - actual_stderr="$("$@" 2>&1 1>/dev/null)" - retval=$? + expected_stdout="$1" + expected_stderr="$2" + expected_retval="$3" + shift 3 - if [ $retval -ne 0 ]; then - echo "assert_error: Return value is $retval, expected 0" - exit 1 - elif [ -n "$actual_stderr" ]; then - echo "assert_error: stderr is not empty" - echo " actual: $actual_stderr" + "$@" 1>actual_stdout 2>actual_stderr + actual_retval=$? + actual_stdout="$(cat actual_stdout)" + actual_stderr="$(cat actual_stderr)" + rm actual_stdout actual_stderr + + test_error=0 + assert_retval $actual_retval $expected_retval + assert_out stdout "$actual_stdout" "$expected_stdout" + assert_out stderr "$actual_stderr" "$expected_stderr" + + if [ $test_error -ne 0 ]; then exit 1 fi } |
