aboutsummaryrefslogtreecommitdiff
path: root/tests/assert.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/assert.sh')
-rw-r--r--tests/assert.sh67
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
}