#!/usr/bin/env bash # **exercise.sh** # Keep track of the current devstack directory. TOP_DIR=$(cd $(dirname "$0") && pwd) # Import common functions source $TOP_DIR/functions # Load local configuration source $TOP_DIR/stackrc # Run everything in the exercises/ directory that isn't explicitly disabled # comma separated list of script basenames to skip # to refrain from exercising euca.sh use SKIP_EXERCISES=euca SKIP_EXERCISES=${SKIP_EXERCISES:-""} # Locate the scripts we should run EXERCISE_DIR=$(dirname "$0")/exercises basenames=$(for b in `ls $EXERCISE_DIR/*.sh`; do basename $b .sh; done) # Track the state of each script passes="" failures="" skips="" # Loop over each possible script (by basename) for script in $basenames; do if [[ "$SKIP_EXERCISES" =~ $script ]] ; then skips="$skips $script" else echo "=====================================================================" echo Running $script echo "=====================================================================" $EXERCISE_DIR/$script.sh exitcode=$? if [[ $exitcode == 55 ]]; then skips="$skips $script" elif [[ $exitcode -ne 0 ]] ; then failures="$failures $script" else passes="$passes $script" fi fi done # output status of exercise run echo "=====================================================================" for script in $skips; do echo SKIP $script done for script in $passes; do echo PASS $script done for script in $failures; do echo FAILED $script done echo "=====================================================================" if [ -n "$failures" ] ; then exit 1 fi