diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2011-10-07 17:22:09 +0100 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2011-10-10 10:33:12 +0100 |
commit | cdb2882dc33b7bd1ee3fba2190cc17fef324050d (patch) | |
tree | 1f06d7dd2c762cf147a7eff3a87473b2968d6edd /tests/test_lib.sh | |
parent | f083ad60f671c0d058668c64ff2bb9ca8fad6fb2 (diff) | |
download | tbdiff-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.sh | 61 |
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" |