summaryrefslogtreecommitdiff
path: root/tests/test_lib.sh
diff options
context:
space:
mode:
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"