aboutsummaryrefslogtreecommitdiff
path: root/testlib.sh
diff options
context:
space:
mode:
authorJunichi Uekawa <dancer@netfort.gr.jp>2008-08-11 23:39:31 +0900
committerJunichi Uekawa <dancer@netfort.gr.jp>2008-08-11 23:39:31 +0900
commit98960e2003834913df870d96a4f7ceabc6fac2c9 (patch)
tree15d3184bce11b843538e7ce35acce8ba86b89b85 /testlib.sh
parent2fce0e3ac0cdacc3adbaa6f1d6a72153b22a5b85 (diff)
downloadpbuilder-98960e2003834913df870d96a4f7ceabc6fac2c9.tar
pbuilder-98960e2003834913df870d96a4f7ceabc6fac2c9.tar.gz
implement a bash functional unit-testing testsuite, testlib.
Diffstat (limited to 'testlib.sh')
-rw-r--r--testlib.sh76
1 files changed, 76 insertions, 0 deletions
diff --git a/testlib.sh b/testlib.sh
new file mode 100644
index 0000000..459c630
--- /dev/null
+++ b/testlib.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+# 2008 Junichi Uekawa <dancer@debian.org>
+
+set -e
+
+# library for functional unit-testing in bash.
+
+TESTLIB_FAILS=0
+TESTLIB_TESTS=0
+
+testlib_echo() {
+ case "$1" in
+ OK)
+ shift
+ echo "[OK ]" "$@" >&2
+ ;;
+ FAIL)
+ shift
+ echo "[FAIL]" "$@" >&2
+ TESTLIB_FAILS=$((TESTLIB_FAILS+1))
+ ;;
+ esac
+ TESTLIB_TESTS=$((TESTLIB_TESTS+1))
+}
+
+testlib_summary() {
+ echo "Ran ${TESTLIB_TESTS} tests and ${TESTLIB_FAILS} failed"
+ if [ $TESTLIB_FAILS != 0 ]; then
+ echo '================='
+ echo 'Testsuite FAILED!'
+ echo '================='
+ exit 1
+ fi
+ exit 0
+}
+
+expect_success() {
+ # run the test in subshell
+ if (
+ "$@"
+ ); then
+ testlib_echo "OK" "$1"
+ else
+ testlib_echo "FAIL" "$1"
+ fi
+}
+
+expect_fail() {
+ # run the test in subshell
+ if (
+ "$@"
+ ); then
+ testlib_echo "FAIL" "$1"
+ else
+ testlib_echo "OK" "$1"
+ fi
+}
+
+expect_output() {
+ # run the test in subshell
+ local val
+ val="$1";
+ shift
+ if [ $( "$@" ) = "$1" ]; then
+ testlib_echo "OK" "$1"
+ else
+ testlib_echo "FAIL" "$1"
+ fi
+}
+
+# Write your functions test_xxxx and call them at the end with their expected result code:
+# expect_success test_success
+# expect_success test_fail
+# expect_success test_options "hello world"
+# testlib_summary
+