summaryrefslogtreecommitdiff
path: root/test/test_helper.bash
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_helper.bash')
-rw-r--r--test/test_helper.bash72
1 files changed, 72 insertions, 0 deletions
diff --git a/test/test_helper.bash b/test/test_helper.bash
new file mode 100644
index 0000000..b4c49cf
--- /dev/null
+++ b/test/test_helper.bash
@@ -0,0 +1,72 @@
+export TMP="$BATS_TEST_DIRNAME/tmp"
+
+teardown() {
+ rm -fr "${TMP:?}"/*
+}
+
+assert() {
+ if ! "$@"; then
+ flunk "failed: $@"
+ fi
+}
+
+refute() {
+ if "$@"; then
+ flunk "expected to fail: $@"
+ fi
+}
+
+flunk() {
+ { if [ "$#" -eq 0 ]; then cat -
+ else echo "$@"
+ fi
+ } | sed "s:${TMP}:\${TMP}:g" >&2
+ return 1
+}
+
+assert_success() {
+ if [ "$status" -ne 0 ]; then
+ { echo "command failed with exit status $status"
+ echo "output: $output"
+ } | flunk
+ elif [ "$#" -gt 0 ]; then
+ assert_output "$1"
+ fi
+}
+
+assert_failure() {
+ if [ "$status" -eq 0 ]; then
+ flunk "expected failed exit status"
+ elif [ "$#" -gt 0 ]; then
+ assert_output "$1"
+ fi
+}
+
+assert_equal() {
+ if [ "$1" != "$2" ]; then
+ { echo "expected: $1"
+ echo "actual: $2"
+ } | flunk
+ fi
+}
+
+assert_output() {
+ local expected
+ if [ $# -eq 0 ]; then expected="$(cat -)"
+ else expected="$1"
+ fi
+ assert_equal "$expected" "$output"
+}
+
+assert_output_contains() {
+ local expected="$1"
+ if [ -z "$expected" ]; then
+ echo "assert_output_contains needs an argument" >&2
+ return 1
+ fi
+ echo "$output" | $(type -p ggrep grep | head -1) -F "$expected" >/dev/null || {
+ { echo "expected output to contain $expected"
+ echo "actual: $output"
+ } | flunk
+ }
+}