| #!/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:-""} |
| |
| # comma separated list of script basenames to run |
| # to run only euca.sh use RUN_EXERCISES=euca |
| basenames=${RUN_EXERCISES:-""} |
| |
| EXERCISE_DIR=$TOP_DIR/exercises |
| |
| if [ -z "${basenames}" ] ; then |
| # Locate the scripts we should run |
| basenames=$(for b in `ls $EXERCISE_DIR/*.sh`; do basename $b .sh; done) |
| else |
| # If RUN_EXERCISES was specified, ignore SKIP_EXERCISES. |
| SKIP_EXERCISES= |
| fi |
| |
| # 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 |