summaryrefslogtreecommitdiff
path: root/tests/test_lib.sh
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2011-10-07 17:22:09 +0100
committerRichard Maw <richard.maw@codethink.co.uk>2011-10-10 10:33:12 +0100
commitcdb2882dc33b7bd1ee3fba2190cc17fef324050d (patch)
tree1f06d7dd2c762cf147a7eff3a87473b2968d6edd /tests/test_lib.sh
parentf083ad60f671c0d058668c64ff2bb9ca8fad6fb2 (diff)
downloadtbdiff-cdb2882dc33b7bd1ee3fba2190cc17fef324050d.tar.gz
Added the ability to test the return code of create and deploy
So expected failures can be made by comparing the return code to the expected Also socket tests have been added, add and diff expect create to fail for now The only sensible operation on sockets is to remove them as they need a program to bind them and that program (or a child) needs to be a server So tbdiff should fail if it has to perform such an act. It may be worth having an option to ignore the change, but for now it's better to fail and let the user know why so they can fix it
Diffstat (limited to 'tests/test_lib.sh')
-rw-r--r--tests/test_lib.sh61
1 files changed, 48 insertions, 13 deletions
diff --git a/tests/test_lib.sh b/tests/test_lib.sh
index 4645166..5112cea 100644
--- a/tests/test_lib.sh
+++ b/tests/test_lib.sh
@@ -41,6 +41,46 @@ check_group () {
test $(stat -c %G $1) = $2
}
+#declare -f is faster, but won't work in dash
+is_function () {
+ type $1 2>/dev/null | grep 'function'
+}
+
+#check_command COMMAND_STRING TEST_COMMAND COMMAND_DESCRIPTION
+check_command () {
+ COMMAND_STRING=$1
+ TEST_COMMAND=$2
+ COMMAND_DESCRIPTION="$3"
+ eval $COMMAND_STRING
+ RETVAL=$?
+ if is_function "$TEST_COMMAND"; then #test explicitly checks return
+ if $TEST_COMMAND $RETVAL; then
+ if [ "$RETVAL" != "0" ]; then
+ echo $COMMAND_STRING expected failure in \
+ $COMMAND_DESCRIPTION >&2
+ echo $OK
+ exit 0
+ fi
+ else
+ if [ "$RETVAL" = "0" ]; then
+ echo $COMMAND_STRING Unexpected success in \
+ $COMMAND_DESCRIPTION >&2
+ echo $FAIL
+ cleanup_and_exit
+ else
+ echo $COMMAND_STRING Unexpected failure in \
+ $COMMAND_DESCRIPTION >&2
+ echo $FAIL
+ cleanup_and_exit
+ fi
+ fi
+ elif [ "$RETVAL" != "0" ]; then #return value expected to be 0
+ echo $COMMAND_STRING Unexpected failure $COMMAND_DESCRIPTION >&2
+ echo $FAIL
+ cleanup_and_exit
+ fi
+}
+
start () {
if [ $# -ne 2 ]
then
@@ -88,20 +128,15 @@ main () {
echo $OK
echo "$TEST_ID Performing $TEST_NAME image creation and deployment: "
- CWD=$(pwd)
- $CREATE $IMGFILE $ORIGIN $TARGET && \
- cd $ORIGIN && \
- $DEPLOY $IMGFILE && \
- RETVAL=$?
- cd $CWD
- if test "x$RETVAL" != "x0"
- then
- echo $FAIL
- echo "Could not create and deploy image." 1>&2
- cleanup_and_exit
- fi
- echo $OK
+ CWD=$(pwd) &&
+ check_command "$CREATE $IMGFILE $ORIGIN $TARGET" 'create_test_return' \
+ "$TEST_ID-$TEST_NAME: creating image"
+ cd $ORIGIN &&
+ check_command "$DEPLOY $IMGFILE" 'deploy_test_return' \
+ "$TEST_ID-$TEST_NAME: deploying image"
+
+ cd $CWD
echo -n "$TEST_ID Checking $TEST_NAME results: "
check_results
if test "x$?" != "x0"